Greatest common substringShortest Longest Common Subsequence CodeDecompose a StringGiven a string find the substring which appears most oftenFind Patterns in StringsShortest Longest Common Subsequence CodeMaximal Substring ConstructionVisualize the greatest common divisorShortest Unique SubstringAs Easy As A-B-CFind the original string, without the repetition without the repetition in the middleThe Third String

Can a significant change in incentives void an employment contract?

Why did the EU agree to delay the Brexit deadline?

Greatest common substring

How to color a curve

A Permanent Norse Presence in America

If a character with the Alert feat rolls a crit fail on their Perception check, are they surprised?

Did US corporations pay demonstrators in the German demonstrations against article 13?

What linear sensor for a keyboard?

Customize circled numbers

We have a love-hate relationship

Is it possible to use .desktop files to open local pdf files on specific pages with a browser?

Some numbers are more equivalent than others

Could the E-bike drivetrain wear down till needing replacement after 400 km?

Varistor? Purpose and principle

About a little hole in Z'ha'dum

Wrapping Cryptocurrencies for interoperability sake

Constructing Group Divisible Designs - Algorithms?

Two-sided logarithm inequality

How can "mimic phobia" be cured or prevented?

How do ground effect vehicles perform turns?

Why does Async/Await work properly when the loop is inside the async function and not the other way around?

Can I sign legal documents with a smiley face?

How much character growth crosses the line into breaking the character

Why did the HMS Bounty go back to a time when whales are already rare?



Greatest common substring


Shortest Longest Common Subsequence CodeDecompose a StringGiven a string find the substring which appears most oftenFind Patterns in StringsShortest Longest Common Subsequence CodeMaximal Substring ConstructionVisualize the greatest common divisorShortest Unique SubstringAs Easy As A-B-CFind the original string, without the repetition without the repetition in the middleThe Third String













4












$begingroup$


Create a program or function which takes a list of strings as input, and outputs the longest string that is a substring of all input strings. If there are several substrings of equal length, and no longer substring, output any one of them.



  • This may mean outputting the empty string.

  • If there are several valid outputs, you may output any one of them. You are not required to give consistent outpput for a given input so long as the output is always valid.

  • There will always be at least one string in the input, but there might not be a non-empty string.

  • All printable ASCII characters may appear in the input. You may assume those are the only characters that appear.

  • You may take input or produce output by any of the default methods.


  • Standard loopholes aren't allowed.

  • This is code-golf - the fewer bytes of code, the better.

Test cases:



[Inputs] -> [Valid outputs (choose one)]



["hello", "'ello"] -> ["ello"]
["very", "much", "different"] -> [""]
["empty", "", "STRING"] -> [""]
["identical", "identical"] -> ["identical"]
["string", "stRIng"] -> ["st", "ng"]
["this one", "is a substring of this one"] -> ["this one"]
["just one"] -> ["just one"]
["", "", ""] -> [""]
["many outputs", "stuptuo ynam"] -> ["m", "a", "n", "y", " ", "o", "u", "t", "p", "s"]
["many inputs", "any inputs", "ny iii", "yanny"] -> ["ny"]
["%%not&", "ju&#st", "[&]alpha_numeric"] -> ["%"]









share|improve this question











$endgroup$











  • $begingroup$
    Possible duplicate
    $endgroup$
    – Adám
    2 hours ago










  • $begingroup$
    @Adám That question asks for the longest common subsequence, not substring.
    $endgroup$
    – Doorknob
    1 hour ago






  • 1




    $begingroup$
    Will the strings be only alphanumeric, or alphabetic, or only printable-ascii?
    $endgroup$
    – Embodiment of Ignorance
    1 hour ago










  • $begingroup$
    @EmbodimentofIgnorance All printable ASCII characters can appear in the input.
    $endgroup$
    – Sara J
    46 mins ago















4












$begingroup$


Create a program or function which takes a list of strings as input, and outputs the longest string that is a substring of all input strings. If there are several substrings of equal length, and no longer substring, output any one of them.



  • This may mean outputting the empty string.

  • If there are several valid outputs, you may output any one of them. You are not required to give consistent outpput for a given input so long as the output is always valid.

  • There will always be at least one string in the input, but there might not be a non-empty string.

  • All printable ASCII characters may appear in the input. You may assume those are the only characters that appear.

  • You may take input or produce output by any of the default methods.


  • Standard loopholes aren't allowed.

  • This is code-golf - the fewer bytes of code, the better.

Test cases:



[Inputs] -> [Valid outputs (choose one)]



["hello", "'ello"] -> ["ello"]
["very", "much", "different"] -> [""]
["empty", "", "STRING"] -> [""]
["identical", "identical"] -> ["identical"]
["string", "stRIng"] -> ["st", "ng"]
["this one", "is a substring of this one"] -> ["this one"]
["just one"] -> ["just one"]
["", "", ""] -> [""]
["many outputs", "stuptuo ynam"] -> ["m", "a", "n", "y", " ", "o", "u", "t", "p", "s"]
["many inputs", "any inputs", "ny iii", "yanny"] -> ["ny"]
["%%not&", "ju&#st", "[&]alpha_numeric"] -> ["%"]









share|improve this question











$endgroup$











  • $begingroup$
    Possible duplicate
    $endgroup$
    – Adám
    2 hours ago










  • $begingroup$
    @Adám That question asks for the longest common subsequence, not substring.
    $endgroup$
    – Doorknob
    1 hour ago






  • 1




    $begingroup$
    Will the strings be only alphanumeric, or alphabetic, or only printable-ascii?
    $endgroup$
    – Embodiment of Ignorance
    1 hour ago










  • $begingroup$
    @EmbodimentofIgnorance All printable ASCII characters can appear in the input.
    $endgroup$
    – Sara J
    46 mins ago













4












4








4





$begingroup$


Create a program or function which takes a list of strings as input, and outputs the longest string that is a substring of all input strings. If there are several substrings of equal length, and no longer substring, output any one of them.



  • This may mean outputting the empty string.

  • If there are several valid outputs, you may output any one of them. You are not required to give consistent outpput for a given input so long as the output is always valid.

  • There will always be at least one string in the input, but there might not be a non-empty string.

  • All printable ASCII characters may appear in the input. You may assume those are the only characters that appear.

  • You may take input or produce output by any of the default methods.


  • Standard loopholes aren't allowed.

  • This is code-golf - the fewer bytes of code, the better.

Test cases:



[Inputs] -> [Valid outputs (choose one)]



["hello", "'ello"] -> ["ello"]
["very", "much", "different"] -> [""]
["empty", "", "STRING"] -> [""]
["identical", "identical"] -> ["identical"]
["string", "stRIng"] -> ["st", "ng"]
["this one", "is a substring of this one"] -> ["this one"]
["just one"] -> ["just one"]
["", "", ""] -> [""]
["many outputs", "stuptuo ynam"] -> ["m", "a", "n", "y", " ", "o", "u", "t", "p", "s"]
["many inputs", "any inputs", "ny iii", "yanny"] -> ["ny"]
["%%not&", "ju&#st", "[&]alpha_numeric"] -> ["%"]









share|improve this question











$endgroup$




Create a program or function which takes a list of strings as input, and outputs the longest string that is a substring of all input strings. If there are several substrings of equal length, and no longer substring, output any one of them.



  • This may mean outputting the empty string.

  • If there are several valid outputs, you may output any one of them. You are not required to give consistent outpput for a given input so long as the output is always valid.

  • There will always be at least one string in the input, but there might not be a non-empty string.

  • All printable ASCII characters may appear in the input. You may assume those are the only characters that appear.

  • You may take input or produce output by any of the default methods.


  • Standard loopholes aren't allowed.

  • This is code-golf - the fewer bytes of code, the better.

Test cases:



[Inputs] -> [Valid outputs (choose one)]



["hello", "'ello"] -> ["ello"]
["very", "much", "different"] -> [""]
["empty", "", "STRING"] -> [""]
["identical", "identical"] -> ["identical"]
["string", "stRIng"] -> ["st", "ng"]
["this one", "is a substring of this one"] -> ["this one"]
["just one"] -> ["just one"]
["", "", ""] -> [""]
["many outputs", "stuptuo ynam"] -> ["m", "a", "n", "y", " ", "o", "u", "t", "p", "s"]
["many inputs", "any inputs", "ny iii", "yanny"] -> ["ny"]
["%%not&", "ju&#st", "[&]alpha_numeric"] -> ["%"]






code-golf string subsequence






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 41 mins ago







Sara J

















asked 2 hours ago









Sara JSara J

1715




1715











  • $begingroup$
    Possible duplicate
    $endgroup$
    – Adám
    2 hours ago










  • $begingroup$
    @Adám That question asks for the longest common subsequence, not substring.
    $endgroup$
    – Doorknob
    1 hour ago






  • 1




    $begingroup$
    Will the strings be only alphanumeric, or alphabetic, or only printable-ascii?
    $endgroup$
    – Embodiment of Ignorance
    1 hour ago










  • $begingroup$
    @EmbodimentofIgnorance All printable ASCII characters can appear in the input.
    $endgroup$
    – Sara J
    46 mins ago
















  • $begingroup$
    Possible duplicate
    $endgroup$
    – Adám
    2 hours ago










  • $begingroup$
    @Adám That question asks for the longest common subsequence, not substring.
    $endgroup$
    – Doorknob
    1 hour ago






  • 1




    $begingroup$
    Will the strings be only alphanumeric, or alphabetic, or only printable-ascii?
    $endgroup$
    – Embodiment of Ignorance
    1 hour ago










  • $begingroup$
    @EmbodimentofIgnorance All printable ASCII characters can appear in the input.
    $endgroup$
    – Sara J
    46 mins ago















$begingroup$
Possible duplicate
$endgroup$
– Adám
2 hours ago




$begingroup$
Possible duplicate
$endgroup$
– Adám
2 hours ago












$begingroup$
@Adám That question asks for the longest common subsequence, not substring.
$endgroup$
– Doorknob
1 hour ago




$begingroup$
@Adám That question asks for the longest common subsequence, not substring.
$endgroup$
– Doorknob
1 hour ago




1




1




$begingroup$
Will the strings be only alphanumeric, or alphabetic, or only printable-ascii?
$endgroup$
– Embodiment of Ignorance
1 hour ago




$begingroup$
Will the strings be only alphanumeric, or alphabetic, or only printable-ascii?
$endgroup$
– Embodiment of Ignorance
1 hour ago












$begingroup$
@EmbodimentofIgnorance All printable ASCII characters can appear in the input.
$endgroup$
– Sara J
46 mins ago




$begingroup$
@EmbodimentofIgnorance All printable ASCII characters can appear in the input.
$endgroup$
– Sara J
46 mins ago










8 Answers
8






active

oldest

votes


















0












$begingroup$


Jelly, 12 bytes



Ẇ€œ&/LÐṀḢ¹L?


Try it online!



Last four bytes are there because of the requirement to only output one answer.






share|improve this answer









$endgroup$




















    0












    $begingroup$


    JavaScript (Node.js), 114 105 bytes





    a=>(F=(l,n,w=a[0].substr(n,l))=>l?n<0?F(--l,L-l):a.some(y=>y.search(w)<0)?F(l,n-1):w:"")(L=a[0].length,0)


    Try it online!



    Probably still golfable.
    y.indexOf must be used in place of y.search if the strings may contain special regex characters, at the cost of 1 more byte.






    share|improve this answer











    $endgroup$




















      0












      $begingroup$


      Brachylog (v2), 3 bytes



      sᵛw


      Try it online!



      Full program. Input from standard input (as a JSON-style list of strings), output to standard output.



      Explanation



      sᵛw
      s Find a substring
      ᵛ of every element of the input; the same one for each
      w and output it.


      Tiebreak order here is set by the s, favouring the longest substring (the secondary tiebreak doesn't matter, but IIRC it's position within the first element of the input).



      Brachylog's s doesn't return empty substrings, so we need a bit of a trick to get around that: instead of making a function submission (which is what's normally done), we write a full program, outputting to standard output. That way, if there's a common substring, we just output it, and we're done. If there isn't a common substring, the program errors out – but it still prints nothing to standard output, thus it outputs the null string as intended.






      share|improve this answer











      $endgroup$




















        0












        $begingroup$


        Python 3, 137 bytes





        def a(b):c=[[d[f:e]for e in range(len(d)+1)for f in range(e+1)]for d in b];return max([i for i in c[0]if all(i in j for j in c)],key=len)


        Try it online!






        share|improve this answer










        New contributor




        Artemis Fowl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.






        $endgroup$












        • $begingroup$
          You may want to use single spaces as indentation instead of 4 that seems to shave more than 100 bytes.
          $endgroup$
          – Shieru Asakoto
          1 hour ago










        • $begingroup$
          @ShieruAsakoto Oops yeah.
          $endgroup$
          – Artemis Fowl
          1 hour ago










        • $begingroup$
          @JoKing tio.run/…
          $endgroup$
          – Artemis Fowl
          37 mins ago










        • $begingroup$
          @JoKing The one currently in my answer is fine for all the test cases.
          $endgroup$
          – Artemis Fowl
          31 mins ago










        • $begingroup$
          Right, here's a fixed version of the 135 byte program
          $endgroup$
          – Jo King
          28 mins ago



















        0












        $begingroup$


        Perl 6, 62 bytes





        ~sort(-*.comb,keys [∩] .map(*.comb[^*X.. ^*+1]>>.join))[0]


        Try it online!



        I'm a little annoyed the Perl 6 can't do set operations on lists of lists, which is why there's an extra .comb and >> in there. Another annoying thing is that max can't take an function for how to compare items, meaning I have to user sort instead.






        share|improve this answer









        $endgroup$




















          0












          $begingroup$


          Japt v2.0a0, 24 bytes



          mã c f@eøXÃr@XÊ>YÊ?X:Y}P


          This is a mess. Why isn't there a max function for arrays in Japt?



          Try it online!





          share









          $endgroup$




















            0












            $begingroup$


            Zsh, 132 bytes





            while read l
            do a=
            for i in 0..$[$#l**2]
            a+=($l[1+i/$#l,1+i%$#l])

            b=($$b-$a:*a)
            done
            for i in $b
            (($#x<$#i))&&x=$i

            <<<$x


            Try it online!



            We read all possible substrings into $a, and then intersect the common elements of $a and $b.



            while read l; do # read each string as a separate line
            a= # unset a
            for i in 0..$[$#l**2]; # compound double loop using div/mod
            a+=( $l[1+i/$#l,1+i%$#l] ) # append to a all possible substrings of the given line

            b=( $$b-$a:*a )
            # $b-$a # if b is unset substitute $a
            # $ :*a # take common elements of $b-$a and $a
            # b=( ) # set b to those elements
            done
            for i in $b;
            (( $#x < $#i ))&&x=$i # if the current word is longer, use it

            <<<$x




            share








            New contributor




            GammaFunction is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.






            $endgroup$




















              0












              $begingroup$


              Python 3, 129 bytes





              lambda b:max(reduce(lambda a,b:a&b,[d[f:e]for e in range(len(d)+2)for f in range(e)for d in b]),key=len)
              from functools import*


              Try it online!



              This is an anonymous lambda that transforms each element into the set of all substrings, then reduces it by set intersection (&) and then returns the max element by length. Man, I wish reduce didn't have to be imported...





              share









              $endgroup$












                Your Answer





                StackExchange.ifUsing("editor", function ()
                return StackExchange.using("mathjaxEditing", function ()
                StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
                StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
                );
                );
                , "mathjax-editing");

                StackExchange.ifUsing("editor", function ()
                StackExchange.using("externalEditor", function ()
                StackExchange.using("snippets", function ()
                StackExchange.snippets.init();
                );
                );
                , "code-snippets");

                StackExchange.ready(function()
                var channelOptions =
                tags: "".split(" "),
                id: "200"
                ;
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function()
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled)
                StackExchange.using("snippets", function()
                createEditor();
                );

                else
                createEditor();

                );

                function createEditor()
                StackExchange.prepareEditor(
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: false,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix: "",
                imageUploader:
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                ,
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                );



                );













                draft saved

                draft discarded


















                StackExchange.ready(
                function ()
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f182134%2fgreatest-common-substring%23new-answer', 'question_page');

                );

                Post as a guest















                Required, but never shown

























                8 Answers
                8






                active

                oldest

                votes








                8 Answers
                8






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                0












                $begingroup$


                Jelly, 12 bytes



                Ẇ€œ&/LÐṀḢ¹L?


                Try it online!



                Last four bytes are there because of the requirement to only output one answer.






                share|improve this answer









                $endgroup$

















                  0












                  $begingroup$


                  Jelly, 12 bytes



                  Ẇ€œ&/LÐṀḢ¹L?


                  Try it online!



                  Last four bytes are there because of the requirement to only output one answer.






                  share|improve this answer









                  $endgroup$















                    0












                    0








                    0





                    $begingroup$


                    Jelly, 12 bytes



                    Ẇ€œ&/LÐṀḢ¹L?


                    Try it online!



                    Last four bytes are there because of the requirement to only output one answer.






                    share|improve this answer









                    $endgroup$




                    Jelly, 12 bytes



                    Ẇ€œ&/LÐṀḢ¹L?


                    Try it online!



                    Last four bytes are there because of the requirement to only output one answer.







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered 1 hour ago









                    Nick KennedyNick Kennedy

                    92147




                    92147





















                        0












                        $begingroup$


                        JavaScript (Node.js), 114 105 bytes





                        a=>(F=(l,n,w=a[0].substr(n,l))=>l?n<0?F(--l,L-l):a.some(y=>y.search(w)<0)?F(l,n-1):w:"")(L=a[0].length,0)


                        Try it online!



                        Probably still golfable.
                        y.indexOf must be used in place of y.search if the strings may contain special regex characters, at the cost of 1 more byte.






                        share|improve this answer











                        $endgroup$

















                          0












                          $begingroup$


                          JavaScript (Node.js), 114 105 bytes





                          a=>(F=(l,n,w=a[0].substr(n,l))=>l?n<0?F(--l,L-l):a.some(y=>y.search(w)<0)?F(l,n-1):w:"")(L=a[0].length,0)


                          Try it online!



                          Probably still golfable.
                          y.indexOf must be used in place of y.search if the strings may contain special regex characters, at the cost of 1 more byte.






                          share|improve this answer











                          $endgroup$















                            0












                            0








                            0





                            $begingroup$


                            JavaScript (Node.js), 114 105 bytes





                            a=>(F=(l,n,w=a[0].substr(n,l))=>l?n<0?F(--l,L-l):a.some(y=>y.search(w)<0)?F(l,n-1):w:"")(L=a[0].length,0)


                            Try it online!



                            Probably still golfable.
                            y.indexOf must be used in place of y.search if the strings may contain special regex characters, at the cost of 1 more byte.






                            share|improve this answer











                            $endgroup$




                            JavaScript (Node.js), 114 105 bytes





                            a=>(F=(l,n,w=a[0].substr(n,l))=>l?n<0?F(--l,L-l):a.some(y=>y.search(w)<0)?F(l,n-1):w:"")(L=a[0].length,0)


                            Try it online!



                            Probably still golfable.
                            y.indexOf must be used in place of y.search if the strings may contain special regex characters, at the cost of 1 more byte.







                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited 59 mins ago

























                            answered 1 hour ago









                            Shieru AsakotoShieru Asakoto

                            2,750317




                            2,750317





















                                0












                                $begingroup$


                                Brachylog (v2), 3 bytes



                                sᵛw


                                Try it online!



                                Full program. Input from standard input (as a JSON-style list of strings), output to standard output.



                                Explanation



                                sᵛw
                                s Find a substring
                                ᵛ of every element of the input; the same one for each
                                w and output it.


                                Tiebreak order here is set by the s, favouring the longest substring (the secondary tiebreak doesn't matter, but IIRC it's position within the first element of the input).



                                Brachylog's s doesn't return empty substrings, so we need a bit of a trick to get around that: instead of making a function submission (which is what's normally done), we write a full program, outputting to standard output. That way, if there's a common substring, we just output it, and we're done. If there isn't a common substring, the program errors out – but it still prints nothing to standard output, thus it outputs the null string as intended.






                                share|improve this answer











                                $endgroup$

















                                  0












                                  $begingroup$


                                  Brachylog (v2), 3 bytes



                                  sᵛw


                                  Try it online!



                                  Full program. Input from standard input (as a JSON-style list of strings), output to standard output.



                                  Explanation



                                  sᵛw
                                  s Find a substring
                                  ᵛ of every element of the input; the same one for each
                                  w and output it.


                                  Tiebreak order here is set by the s, favouring the longest substring (the secondary tiebreak doesn't matter, but IIRC it's position within the first element of the input).



                                  Brachylog's s doesn't return empty substrings, so we need a bit of a trick to get around that: instead of making a function submission (which is what's normally done), we write a full program, outputting to standard output. That way, if there's a common substring, we just output it, and we're done. If there isn't a common substring, the program errors out – but it still prints nothing to standard output, thus it outputs the null string as intended.






                                  share|improve this answer











                                  $endgroup$















                                    0












                                    0








                                    0





                                    $begingroup$


                                    Brachylog (v2), 3 bytes



                                    sᵛw


                                    Try it online!



                                    Full program. Input from standard input (as a JSON-style list of strings), output to standard output.



                                    Explanation



                                    sᵛw
                                    s Find a substring
                                    ᵛ of every element of the input; the same one for each
                                    w and output it.


                                    Tiebreak order here is set by the s, favouring the longest substring (the secondary tiebreak doesn't matter, but IIRC it's position within the first element of the input).



                                    Brachylog's s doesn't return empty substrings, so we need a bit of a trick to get around that: instead of making a function submission (which is what's normally done), we write a full program, outputting to standard output. That way, if there's a common substring, we just output it, and we're done. If there isn't a common substring, the program errors out – but it still prints nothing to standard output, thus it outputs the null string as intended.






                                    share|improve this answer











                                    $endgroup$




                                    Brachylog (v2), 3 bytes



                                    sᵛw


                                    Try it online!



                                    Full program. Input from standard input (as a JSON-style list of strings), output to standard output.



                                    Explanation



                                    sᵛw
                                    s Find a substring
                                    ᵛ of every element of the input; the same one for each
                                    w and output it.


                                    Tiebreak order here is set by the s, favouring the longest substring (the secondary tiebreak doesn't matter, but IIRC it's position within the first element of the input).



                                    Brachylog's s doesn't return empty substrings, so we need a bit of a trick to get around that: instead of making a function submission (which is what's normally done), we write a full program, outputting to standard output. That way, if there's a common substring, we just output it, and we're done. If there isn't a common substring, the program errors out – but it still prints nothing to standard output, thus it outputs the null string as intended.







                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    answered 56 mins ago


























                                    community wiki





                                    ais523






















                                        0












                                        $begingroup$


                                        Python 3, 137 bytes





                                        def a(b):c=[[d[f:e]for e in range(len(d)+1)for f in range(e+1)]for d in b];return max([i for i in c[0]if all(i in j for j in c)],key=len)


                                        Try it online!






                                        share|improve this answer










                                        New contributor




                                        Artemis Fowl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                        Check out our Code of Conduct.






                                        $endgroup$












                                        • $begingroup$
                                          You may want to use single spaces as indentation instead of 4 that seems to shave more than 100 bytes.
                                          $endgroup$
                                          – Shieru Asakoto
                                          1 hour ago










                                        • $begingroup$
                                          @ShieruAsakoto Oops yeah.
                                          $endgroup$
                                          – Artemis Fowl
                                          1 hour ago










                                        • $begingroup$
                                          @JoKing tio.run/…
                                          $endgroup$
                                          – Artemis Fowl
                                          37 mins ago










                                        • $begingroup$
                                          @JoKing The one currently in my answer is fine for all the test cases.
                                          $endgroup$
                                          – Artemis Fowl
                                          31 mins ago










                                        • $begingroup$
                                          Right, here's a fixed version of the 135 byte program
                                          $endgroup$
                                          – Jo King
                                          28 mins ago
















                                        0












                                        $begingroup$


                                        Python 3, 137 bytes





                                        def a(b):c=[[d[f:e]for e in range(len(d)+1)for f in range(e+1)]for d in b];return max([i for i in c[0]if all(i in j for j in c)],key=len)


                                        Try it online!






                                        share|improve this answer










                                        New contributor




                                        Artemis Fowl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                        Check out our Code of Conduct.






                                        $endgroup$












                                        • $begingroup$
                                          You may want to use single spaces as indentation instead of 4 that seems to shave more than 100 bytes.
                                          $endgroup$
                                          – Shieru Asakoto
                                          1 hour ago










                                        • $begingroup$
                                          @ShieruAsakoto Oops yeah.
                                          $endgroup$
                                          – Artemis Fowl
                                          1 hour ago










                                        • $begingroup$
                                          @JoKing tio.run/…
                                          $endgroup$
                                          – Artemis Fowl
                                          37 mins ago










                                        • $begingroup$
                                          @JoKing The one currently in my answer is fine for all the test cases.
                                          $endgroup$
                                          – Artemis Fowl
                                          31 mins ago










                                        • $begingroup$
                                          Right, here's a fixed version of the 135 byte program
                                          $endgroup$
                                          – Jo King
                                          28 mins ago














                                        0












                                        0








                                        0





                                        $begingroup$


                                        Python 3, 137 bytes





                                        def a(b):c=[[d[f:e]for e in range(len(d)+1)for f in range(e+1)]for d in b];return max([i for i in c[0]if all(i in j for j in c)],key=len)


                                        Try it online!






                                        share|improve this answer










                                        New contributor




                                        Artemis Fowl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                        Check out our Code of Conduct.






                                        $endgroup$




                                        Python 3, 137 bytes





                                        def a(b):c=[[d[f:e]for e in range(len(d)+1)for f in range(e+1)]for d in b];return max([i for i in c[0]if all(i in j for j in c)],key=len)


                                        Try it online!







                                        share|improve this answer










                                        New contributor




                                        Artemis Fowl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                        Check out our Code of Conduct.









                                        share|improve this answer



                                        share|improve this answer








                                        edited 28 mins ago





















                                        New contributor




                                        Artemis Fowl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                        Check out our Code of Conduct.









                                        answered 1 hour ago









                                        Artemis FowlArtemis Fowl

                                        1013




                                        1013




                                        New contributor




                                        Artemis Fowl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                        Check out our Code of Conduct.





                                        New contributor





                                        Artemis Fowl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                        Check out our Code of Conduct.






                                        Artemis Fowl is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                        Check out our Code of Conduct.











                                        • $begingroup$
                                          You may want to use single spaces as indentation instead of 4 that seems to shave more than 100 bytes.
                                          $endgroup$
                                          – Shieru Asakoto
                                          1 hour ago










                                        • $begingroup$
                                          @ShieruAsakoto Oops yeah.
                                          $endgroup$
                                          – Artemis Fowl
                                          1 hour ago










                                        • $begingroup$
                                          @JoKing tio.run/…
                                          $endgroup$
                                          – Artemis Fowl
                                          37 mins ago










                                        • $begingroup$
                                          @JoKing The one currently in my answer is fine for all the test cases.
                                          $endgroup$
                                          – Artemis Fowl
                                          31 mins ago










                                        • $begingroup$
                                          Right, here's a fixed version of the 135 byte program
                                          $endgroup$
                                          – Jo King
                                          28 mins ago

















                                        • $begingroup$
                                          You may want to use single spaces as indentation instead of 4 that seems to shave more than 100 bytes.
                                          $endgroup$
                                          – Shieru Asakoto
                                          1 hour ago










                                        • $begingroup$
                                          @ShieruAsakoto Oops yeah.
                                          $endgroup$
                                          – Artemis Fowl
                                          1 hour ago










                                        • $begingroup$
                                          @JoKing tio.run/…
                                          $endgroup$
                                          – Artemis Fowl
                                          37 mins ago










                                        • $begingroup$
                                          @JoKing The one currently in my answer is fine for all the test cases.
                                          $endgroup$
                                          – Artemis Fowl
                                          31 mins ago










                                        • $begingroup$
                                          Right, here's a fixed version of the 135 byte program
                                          $endgroup$
                                          – Jo King
                                          28 mins ago
















                                        $begingroup$
                                        You may want to use single spaces as indentation instead of 4 that seems to shave more than 100 bytes.
                                        $endgroup$
                                        – Shieru Asakoto
                                        1 hour ago




                                        $begingroup$
                                        You may want to use single spaces as indentation instead of 4 that seems to shave more than 100 bytes.
                                        $endgroup$
                                        – Shieru Asakoto
                                        1 hour ago












                                        $begingroup$
                                        @ShieruAsakoto Oops yeah.
                                        $endgroup$
                                        – Artemis Fowl
                                        1 hour ago




                                        $begingroup$
                                        @ShieruAsakoto Oops yeah.
                                        $endgroup$
                                        – Artemis Fowl
                                        1 hour ago












                                        $begingroup$
                                        @JoKing tio.run/…
                                        $endgroup$
                                        – Artemis Fowl
                                        37 mins ago




                                        $begingroup$
                                        @JoKing tio.run/…
                                        $endgroup$
                                        – Artemis Fowl
                                        37 mins ago












                                        $begingroup$
                                        @JoKing The one currently in my answer is fine for all the test cases.
                                        $endgroup$
                                        – Artemis Fowl
                                        31 mins ago




                                        $begingroup$
                                        @JoKing The one currently in my answer is fine for all the test cases.
                                        $endgroup$
                                        – Artemis Fowl
                                        31 mins ago












                                        $begingroup$
                                        Right, here's a fixed version of the 135 byte program
                                        $endgroup$
                                        – Jo King
                                        28 mins ago





                                        $begingroup$
                                        Right, here's a fixed version of the 135 byte program
                                        $endgroup$
                                        – Jo King
                                        28 mins ago












                                        0












                                        $begingroup$


                                        Perl 6, 62 bytes





                                        ~sort(-*.comb,keys [∩] .map(*.comb[^*X.. ^*+1]>>.join))[0]


                                        Try it online!



                                        I'm a little annoyed the Perl 6 can't do set operations on lists of lists, which is why there's an extra .comb and >> in there. Another annoying thing is that max can't take an function for how to compare items, meaning I have to user sort instead.






                                        share|improve this answer









                                        $endgroup$

















                                          0












                                          $begingroup$


                                          Perl 6, 62 bytes





                                          ~sort(-*.comb,keys [∩] .map(*.comb[^*X.. ^*+1]>>.join))[0]


                                          Try it online!



                                          I'm a little annoyed the Perl 6 can't do set operations on lists of lists, which is why there's an extra .comb and >> in there. Another annoying thing is that max can't take an function for how to compare items, meaning I have to user sort instead.






                                          share|improve this answer









                                          $endgroup$















                                            0












                                            0








                                            0





                                            $begingroup$


                                            Perl 6, 62 bytes





                                            ~sort(-*.comb,keys [∩] .map(*.comb[^*X.. ^*+1]>>.join))[0]


                                            Try it online!



                                            I'm a little annoyed the Perl 6 can't do set operations on lists of lists, which is why there's an extra .comb and >> in there. Another annoying thing is that max can't take an function for how to compare items, meaning I have to user sort instead.






                                            share|improve this answer









                                            $endgroup$




                                            Perl 6, 62 bytes





                                            ~sort(-*.comb,keys [∩] .map(*.comb[^*X.. ^*+1]>>.join))[0]


                                            Try it online!



                                            I'm a little annoyed the Perl 6 can't do set operations on lists of lists, which is why there's an extra .comb and >> in there. Another annoying thing is that max can't take an function for how to compare items, meaning I have to user sort instead.







                                            share|improve this answer












                                            share|improve this answer



                                            share|improve this answer










                                            answered 10 mins ago









                                            Jo KingJo King

                                            25.3k361129




                                            25.3k361129





















                                                0












                                                $begingroup$


                                                Japt v2.0a0, 24 bytes



                                                mã c f@eøXÃr@XÊ>YÊ?X:Y}P


                                                This is a mess. Why isn't there a max function for arrays in Japt?



                                                Try it online!





                                                share









                                                $endgroup$

















                                                  0












                                                  $begingroup$


                                                  Japt v2.0a0, 24 bytes



                                                  mã c f@eøXÃr@XÊ>YÊ?X:Y}P


                                                  This is a mess. Why isn't there a max function for arrays in Japt?



                                                  Try it online!





                                                  share









                                                  $endgroup$















                                                    0












                                                    0








                                                    0





                                                    $begingroup$


                                                    Japt v2.0a0, 24 bytes



                                                    mã c f@eøXÃr@XÊ>YÊ?X:Y}P


                                                    This is a mess. Why isn't there a max function for arrays in Japt?



                                                    Try it online!





                                                    share









                                                    $endgroup$




                                                    Japt v2.0a0, 24 bytes



                                                    mã c f@eøXÃr@XÊ>YÊ?X:Y}P


                                                    This is a mess. Why isn't there a max function for arrays in Japt?



                                                    Try it online!






                                                    share











                                                    share


                                                    share










                                                    answered 8 mins ago









                                                    Embodiment of IgnoranceEmbodiment of Ignorance

                                                    2,138125




                                                    2,138125





















                                                        0












                                                        $begingroup$


                                                        Zsh, 132 bytes





                                                        while read l
                                                        do a=
                                                        for i in 0..$[$#l**2]
                                                        a+=($l[1+i/$#l,1+i%$#l])

                                                        b=($$b-$a:*a)
                                                        done
                                                        for i in $b
                                                        (($#x<$#i))&&x=$i

                                                        <<<$x


                                                        Try it online!



                                                        We read all possible substrings into $a, and then intersect the common elements of $a and $b.



                                                        while read l; do # read each string as a separate line
                                                        a= # unset a
                                                        for i in 0..$[$#l**2]; # compound double loop using div/mod
                                                        a+=( $l[1+i/$#l,1+i%$#l] ) # append to a all possible substrings of the given line

                                                        b=( $$b-$a:*a )
                                                        # $b-$a # if b is unset substitute $a
                                                        # $ :*a # take common elements of $b-$a and $a
                                                        # b=( ) # set b to those elements
                                                        done
                                                        for i in $b;
                                                        (( $#x < $#i ))&&x=$i # if the current word is longer, use it

                                                        <<<$x




                                                        share








                                                        New contributor




                                                        GammaFunction is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                        Check out our Code of Conduct.






                                                        $endgroup$

















                                                          0












                                                          $begingroup$


                                                          Zsh, 132 bytes





                                                          while read l
                                                          do a=
                                                          for i in 0..$[$#l**2]
                                                          a+=($l[1+i/$#l,1+i%$#l])

                                                          b=($$b-$a:*a)
                                                          done
                                                          for i in $b
                                                          (($#x<$#i))&&x=$i

                                                          <<<$x


                                                          Try it online!



                                                          We read all possible substrings into $a, and then intersect the common elements of $a and $b.



                                                          while read l; do # read each string as a separate line
                                                          a= # unset a
                                                          for i in 0..$[$#l**2]; # compound double loop using div/mod
                                                          a+=( $l[1+i/$#l,1+i%$#l] ) # append to a all possible substrings of the given line

                                                          b=( $$b-$a:*a )
                                                          # $b-$a # if b is unset substitute $a
                                                          # $ :*a # take common elements of $b-$a and $a
                                                          # b=( ) # set b to those elements
                                                          done
                                                          for i in $b;
                                                          (( $#x < $#i ))&&x=$i # if the current word is longer, use it

                                                          <<<$x




                                                          share








                                                          New contributor




                                                          GammaFunction is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                          Check out our Code of Conduct.






                                                          $endgroup$















                                                            0












                                                            0








                                                            0





                                                            $begingroup$


                                                            Zsh, 132 bytes





                                                            while read l
                                                            do a=
                                                            for i in 0..$[$#l**2]
                                                            a+=($l[1+i/$#l,1+i%$#l])

                                                            b=($$b-$a:*a)
                                                            done
                                                            for i in $b
                                                            (($#x<$#i))&&x=$i

                                                            <<<$x


                                                            Try it online!



                                                            We read all possible substrings into $a, and then intersect the common elements of $a and $b.



                                                            while read l; do # read each string as a separate line
                                                            a= # unset a
                                                            for i in 0..$[$#l**2]; # compound double loop using div/mod
                                                            a+=( $l[1+i/$#l,1+i%$#l] ) # append to a all possible substrings of the given line

                                                            b=( $$b-$a:*a )
                                                            # $b-$a # if b is unset substitute $a
                                                            # $ :*a # take common elements of $b-$a and $a
                                                            # b=( ) # set b to those elements
                                                            done
                                                            for i in $b;
                                                            (( $#x < $#i ))&&x=$i # if the current word is longer, use it

                                                            <<<$x




                                                            share








                                                            New contributor




                                                            GammaFunction is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                            Check out our Code of Conduct.






                                                            $endgroup$




                                                            Zsh, 132 bytes





                                                            while read l
                                                            do a=
                                                            for i in 0..$[$#l**2]
                                                            a+=($l[1+i/$#l,1+i%$#l])

                                                            b=($$b-$a:*a)
                                                            done
                                                            for i in $b
                                                            (($#x<$#i))&&x=$i

                                                            <<<$x


                                                            Try it online!



                                                            We read all possible substrings into $a, and then intersect the common elements of $a and $b.



                                                            while read l; do # read each string as a separate line
                                                            a= # unset a
                                                            for i in 0..$[$#l**2]; # compound double loop using div/mod
                                                            a+=( $l[1+i/$#l,1+i%$#l] ) # append to a all possible substrings of the given line

                                                            b=( $$b-$a:*a )
                                                            # $b-$a # if b is unset substitute $a
                                                            # $ :*a # take common elements of $b-$a and $a
                                                            # b=( ) # set b to those elements
                                                            done
                                                            for i in $b;
                                                            (( $#x < $#i ))&&x=$i # if the current word is longer, use it

                                                            <<<$x





                                                            share








                                                            New contributor




                                                            GammaFunction is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                            Check out our Code of Conduct.








                                                            share


                                                            share






                                                            New contributor




                                                            GammaFunction is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                            Check out our Code of Conduct.









                                                            answered 1 min ago









                                                            GammaFunctionGammaFunction

                                                            615




                                                            615




                                                            New contributor




                                                            GammaFunction is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                            Check out our Code of Conduct.





                                                            New contributor





                                                            GammaFunction is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                            Check out our Code of Conduct.






                                                            GammaFunction is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                            Check out our Code of Conduct.





















                                                                0












                                                                $begingroup$


                                                                Python 3, 129 bytes





                                                                lambda b:max(reduce(lambda a,b:a&b,[d[f:e]for e in range(len(d)+2)for f in range(e)for d in b]),key=len)
                                                                from functools import*


                                                                Try it online!



                                                                This is an anonymous lambda that transforms each element into the set of all substrings, then reduces it by set intersection (&) and then returns the max element by length. Man, I wish reduce didn't have to be imported...





                                                                share









                                                                $endgroup$

















                                                                  0












                                                                  $begingroup$


                                                                  Python 3, 129 bytes





                                                                  lambda b:max(reduce(lambda a,b:a&b,[d[f:e]for e in range(len(d)+2)for f in range(e)for d in b]),key=len)
                                                                  from functools import*


                                                                  Try it online!



                                                                  This is an anonymous lambda that transforms each element into the set of all substrings, then reduces it by set intersection (&) and then returns the max element by length. Man, I wish reduce didn't have to be imported...





                                                                  share









                                                                  $endgroup$















                                                                    0












                                                                    0








                                                                    0





                                                                    $begingroup$


                                                                    Python 3, 129 bytes





                                                                    lambda b:max(reduce(lambda a,b:a&b,[d[f:e]for e in range(len(d)+2)for f in range(e)for d in b]),key=len)
                                                                    from functools import*


                                                                    Try it online!



                                                                    This is an anonymous lambda that transforms each element into the set of all substrings, then reduces it by set intersection (&) and then returns the max element by length. Man, I wish reduce didn't have to be imported...





                                                                    share









                                                                    $endgroup$




                                                                    Python 3, 129 bytes





                                                                    lambda b:max(reduce(lambda a,b:a&b,[d[f:e]for e in range(len(d)+2)for f in range(e)for d in b]),key=len)
                                                                    from functools import*


                                                                    Try it online!



                                                                    This is an anonymous lambda that transforms each element into the set of all substrings, then reduces it by set intersection (&) and then returns the max element by length. Man, I wish reduce didn't have to be imported...






                                                                    share











                                                                    share


                                                                    share










                                                                    answered 29 secs ago









                                                                    Jo KingJo King

                                                                    25.3k361129




                                                                    25.3k361129



























                                                                        draft saved

                                                                        draft discarded
















































                                                                        If this is an answer to a challenge…



                                                                        • …Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.


                                                                        • …Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
                                                                          Explanations of your answer make it more interesting to read and are very much encouraged.


                                                                        • …Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.


                                                                        More generally…



                                                                        • …Please make sure to answer the question and provide sufficient detail.


                                                                        • …Avoid asking for help, clarification or responding to other answers (use comments instead).




                                                                        draft saved


                                                                        draft discarded














                                                                        StackExchange.ready(
                                                                        function ()
                                                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f182134%2fgreatest-common-substring%23new-answer', 'question_page');

                                                                        );

                                                                        Post as a guest















                                                                        Required, but never shown





















































                                                                        Required, but never shown














                                                                        Required, but never shown












                                                                        Required, but never shown







                                                                        Required, but never shown

































                                                                        Required, but never shown














                                                                        Required, but never shown












                                                                        Required, but never shown







                                                                        Required, but never shown







                                                                        Popular posts from this blog

                                                                        Are there any AGPL-style licences that require source code modifications to be public? Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Force derivative works to be publicAre there any GPL like licenses for Apple App Store?Do you violate the GPL if you provide source code that cannot be compiled?GPL - is it distribution to use libraries in an appliance loaned to customers?Distributing App for free which uses GPL'ed codeModifications of server software under GPL, with web/CLI interfaceDoes using an AGPLv3-licensed library prevent me from dual-licensing my own source code?Can I publish only select code under GPLv3 from a private project?Is there published precedent regarding the scope of covered work that uses AGPL software?If MIT licensed code links to GPL licensed code what should be the license of the resulting binary program?If I use a public API endpoint that has its source code licensed under AGPL in my app, do I need to disclose my source?

                                                                        2013 GY136 Descoberta | Órbita | Referências Menu de navegação«List Of Centaurs and Scattered-Disk Objects»«List of Known Trans-Neptunian Objects»

                                                                        Button changing it's text & action. Good or terrible? The 2019 Stack Overflow Developer Survey Results Are Inchanging text on user mouseoverShould certain functions be “hard to find” for powerusers to discover?Custom liking function - do I need user login?Using different checkbox style for different checkbox behaviorBest Practices: Save and Exit in Software UIInteraction with remote validated formMore efficient UI to progress the user through a complicated process?Designing a popup notice for a gameShould bulk-editing functions be hidden until a table row is selected, or is there a better solution?Is it bad practice to disable (replace) the context menu?