আমি বলার পরে বলুন!


23

আর্গুমেন্ট হিসাবে একটি স্ট্রিং দেওয়া হয়েছে, দীর্ঘতর (গুলি) নন-ওভারল্যাপিং পুনরাবৃত্ত স্ট্রিং (গুলি) বা শূন্যের দৈর্ঘ্য আউটপুট করুন যদি এরকম কোনও স্ট্রিং না থাকে।

আপনি ধরে নিতে পারেন ইনপুট স্ট্রিংটি খালি নয়।

উদাহরণ

abcdefabc: সাবস্ট্রিং abc1 এবং 7 পজিশনে পুনরাবৃত্তি হয়, সুতরাং প্রোগ্রামটি 3 আউটপুট করা উচিত

abcabcabcabcab: abcabcবা bcabcaবা cabcabপুনরাবৃত্ত হয়, তাই প্রোগ্রাম উচিত আউটপুট 6 । (সাবস্ট্রিংটিও abcabcabcabপুনরাবৃত্তি হয়েছে, তবে সংঘটনগুলি ওভারল্যাপ হয়, তাই আমরা এটি গ্রহণ করি না)।

aaaaaaa: aaaউদাহরণস্বরূপ 1 এবং 4 পজিশনে পুনরাবৃত্তি হয়, সুতরাং প্রোগ্রামটি 3 আউটপুট করা উচিত

abcda: aপুনরাবৃত্তি হয়, সুতরাং প্রোগ্রাম 1 আউটপুট করা উচিত

xyz: পুনরাবৃত্তি স্ট্রিং → 0 নেই

ababcabcabcabcab: 6 ফিরে আসা উচিত

এটি , তাই খুব কম বাইট জিতেছে।


1
স্ট্রিং খালি থাকতে পারে? যদি এটি হয় তবে এটি কি 0 এর পরিবর্তে মিথ্যা আউটপুট দেওয়ার অনুমতি দেওয়া হবে ?
ডেনিস

@ ডেনিস আপনি ধরে নিতে পারেন স্ট্রিংটি খালি নয়।
আর্নাড

উত্তর:


9

ব্রেনফাক, 226 বাইট

,[<<<,]+[>>->[[[[>>[>>>]<+<-<[<<<]>>+<-]>[<+>-]>[>>>]<<[>[<+>-]]>[[<+>-]>+[<<<]>
>>-[+>[<<<]<[>+>[->]<<[<]>-]>[<+>>+<-]>>>[>>>]]>>]<]>+[,<<<+]->[<<<]>>>>>+[,+>>>
+]-[>>>]->]<[+<<<]+<<<++[->>>]+>>>->]<[,<<<]<[>>>+<<<-]>+>,>>>]<<.

বিন্যাসকৃত:

,[<<<,]
+
[
  for each suffix
  >>->
  [
    for each prefix
    [
      for each suffix
      [
        for each char while no mismatch
        [
          >>[>>>]
          <+<-<[<<<]
          > >+<-
        ]
        >[<+>-]
        >[>>>]
        <<
        [
          mismatch
          >[<+>-]
        ]
        >
        [
          [<+>-]
          >+[<<<]
          >>>-
          [
            match
            +>[<<<]
            <
            [
              >+>[->]
              <<[<]
              >-
            ]
            >[<+> >+<-]
            >>>[>>>]
          ]
          >>
        ]
        <
      ]
      >+[,<<<+]
      ->[<<<]
      >>> >>+[,+>>>+]
      -[>>>]
      ->
    ]
    <[+<<<]
    +<<<++[->>>]
    +>>>->
  ]
  <[,<<<]
  <[>>>+<<<-]
  >+>,>>>
]
<<.

ট্রেলিং করা নতুন লাইনটি সহ বা ছাড়া ইনপুট আশা করে এবং ফলাফলকে বাইট মান হিসাবে আউটপুট করে ।

এটি অনলাইনে চেষ্টা করুন।

এটি প্রতিটি উপসর্গ পরীক্ষা করে এটি স্ট্রিংয়ের পরে পরে ঘটে কিনা তা পরীক্ষা করে দেখুন, তারপরে প্রথম চরিত্রটি ছাড়ে এবং আরও অক্ষর না থাকা অবধি প্রক্রিয়াটি পুনরাবৃত্তি করে।

টেপটি 3-সেল নোডে বিভক্ত করা হয়েছে,

c 0 f

cপ্রদত্ত স্ট্রিংয়ের একটি অক্ষর যেখানে রয়েছে এবং fএটি এমন একটি পতাকা যা এক, নেতিবাচক বা শূন্য হতে পারে। ননজারো পতাকাগুলি বর্তমানে তুলনা করা দুটি অক্ষরের মধ্যে স্থাপন করা হয়েছে এবং বর্তমান উপসর্গের শেষে এবং বর্তমান প্রত্যয় শুরুর আগে (যেমন, বর্তমান সম্ভাব্য ম্যাচের সূচকের আগে) নেতিবাচক সেগুলি কোষগুলির জন্য সংরক্ষিত রয়েছে।

ফলাফলটি স্ট্রিংয়ের বামে সঞ্চিত থাকে এবং যখনই কোনও ম্যাচ পাওয়া যায় তখন আপডেট হয়।

(স্ট্রিংটি আসলে এতে \x01যুক্ত হওয়া সাথে বিপরীতে প্রক্রিয়া করা হয় ))


6

জেলি , 12 বাইট

œ-QL€
ŒṖÇ€FṀ

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

ŒṖÇ€FṀ  Main link. Argument: s (string)

ŒṖ      Generate all partitions of s.
  ǀ    Apply the helper link to each partition.
    F   Flatten the resulting array of lengths.
     Ṁ  Take the maximum.


œ-QL€   Helper link. Argument: P (partition)

  Q     Yield the elements of P, deduplicated.
œ-      Multiset subtraction; remove exactly one occurrence of each string in P.
   L€   Compute the lengths of the remaining strings. 

1
সব শিলাবৃষ্টি জেলি, চূড়ান্ত কোড গল্ফ ভাষা!
নিসা

œ-Qসত্যিই ঝরঝরে।
লিন

5

পার্ল 6 , 36 বাইট

{m:ex/(.*).*$0/.map(*[0].chars).max}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{   # bare block lambda with implicit parameter 「$_」

  m           # match ( implicitly against 「$_」
  :exhaustive # every possible way
  /
    (.*)      # any number of characters ( stored in 「$0」 )
    .*
    $0
  /

  .map(

    *\        # the parameter to Whatever lambda
    [0]\      # the value that was in 「$0」 for that match
    .chars    # the number of characters

  ).max

}

5

রেটিনা , 35 32 30 বাইট

খুব শীতল চ্যালেঞ্জ।

M&!`(.*)(?=.*\1)
M%`.
O#^`
G1`

এটি অনলাইনে চেষ্টা করুন

ব্যাখ্যা:

M&!`(.*)(?=.*\1)    # Prints overlapping greedy substrings occuring more than once
M%`.                # Replace each line with its length
O#^`                # Sort lines by number in reverse
G1`                 # Return the first line

আপনি M%`.দ্বিতীয় স্তর হিসাবে ব্যবহার করে দুটি বাইট সংরক্ষণ করতে পারেন ।
মার্টিন ইন্ডার

4

জাভাস্ক্রিপ্ট (ES6), 79 68 66 বাইট

f=(s,r,l=s.match(/(.*).*\1/)[1].length)=>s?f(s.slice(1),l<r?r:l):r
<input oninput=o.textContent=f(this.value)><pre id=o>

সম্পাদনা করুন: সংরক্ষিত 11 13 বাইট @ অর্ণাড্ডকে ধন্যবাদ


4

হাস্কেল , 79 বাইট

(""%)
(a:b)!(c:d)|a==c=1+b!d
_!_=0
a%c@(e:d)=maximum[a!c,""%d,(a++[e])%d]
_%_=0

এটি অনলাইন চেষ্টা করুন!


2
এটা প্রথম আর্গুমেন্ট মত দেখায় %একটি অ-সংলগ্ন subsequence জমা হতে পারে জন্য 2 মত মিথ্যা positives দান aaমধ্যে axayaa,
xnor

@ Xnor কি বলেছে। আমি মনে করি যে পুনরাবৃত্তি কলটি a%dভুল, তবে অপ্রয়োজনীয়ও। যার অর্থ আপনি maxপরিবর্তে ব্যবহার করতে পারেন maximum
janrjan জোহানসেন

1
আমি মনে করি এটি ঠিক a%dকরার জন্য পরিবর্তন ""%dকরছি।
xnor

ওহ ঠিক আছে, aখালি থাকা অবস্থায় এটি এখনও প্রয়োজন (এবং শব্দ) ।
janrjan জোহানসেন

1
আমি মনে করি sum[1|(x,y)<-zip a c,x==y]পরিবর্তে ব্যবহার করা যেতে পারে a!c
লাইকনি


2

জাভাস্ক্রিপ্ট, 120

function r(a,b,m){return b=-~b,t=a.slice(0,b),n=a.indexOf(t,b),m=b>m&&!~n?m:b,a!=t&&r(a,b,m)||(a?r(a.slice(1),m,m):~-m)}

2

হুশ , 11 বাইট

L►L§fo↓2`xQ

এটি অনলাইন চেষ্টা করুন!

দ্রষ্টব্য: এই চ্যালেঞ্জের চেয়ে কুঁচকী নতুন।

ব্যাখ্যা

L►L§fo↓2`xQ  Implicit input, say x = "ababc"
          Q  Nonempty substrings: ["a","b","ab",..,"ababc"]
    f        Keep those that satisfy this:
              Take s = "ab" as an example.
   §    `x    Split x along s: ["","","c"]
     o↓2      Drop the first two pieces: ["c"]
              This is truthy (i.e. nonempty).
             Result is ["a","b","ab","a","b","ab"]
 ►L          Take element with maximal length: "ab"
             If the list is empty, "" is used instead.
L            Length: 2


1

গণিত, 75 65 বাইট

@ জিংহওয়ান মিনের কারণে 10 বাইট সংরক্ষণ করা হয়েছে ।

Max@StringLength@StringCases[#,a___~~___~~a___:>a,Overlaps->All]&

বেনামে ফাংশন। ইনপুট হিসাবে একটি স্ট্রিং নেয় এবং আউটপুট হিসাবে একটি নম্বর প্রদান করে।


আমি তোমাদের শুরুতে এবং শেষ প্রয়োজন মনে করি না BlankNullSequence (___)যখন Overlaps->Allনেই। Max@StringLength@StringCases[#,a___~~___~~a___:>a,Overlaps->All]&ঠিক আছে।
জংহওয়ান মিন

@ জংহোয়ানমিন ধন্যবাদ, এটির সাথে বিভ্রান্ত হচ্ছিল StringReplace: পি
লিজিওন ম্যামাল978

1

পাইথ - 16 বাইট

আমার সমস্ত স্ট্রিংকে দৈর্ঘ্যে রূপান্তর করতে এবং সর্বাধিক সন্ধান করতে আমার গল্ফ দরকার।

eSlM+ksmft/dTd./

টেস্ট স্যুট


1

ক্লোজার, 112 বাইট

#(apply max(for[R[(range(count %))]j R i R](let[[b e](split-at i(drop j %))](if((set(partition i 1 e))b)i 0)))))

লুপ সংখ্যার উপর দুইবার 0করার n - 1( nস্ট্রিং এর দৈর্ঘ্য হচ্ছে), ড্রপ jঅক্ষর এবং "আদিতে" এবং "শেষ" অংশে বাকি splits। সমস্ত সাবস্ট্রিংয়ের eদৈর্ঘ্যের একটি সেট তৈরি করে bএবং bসেখান থেকে পাওয়া যায় কিনা তা পরীক্ষা করতে এটি একটি ফাংশন হিসাবে ব্যবহার করে । bপাওয়া গেলে দৈর্ঘ্য এবং অন্যথায় 0 প্রদান করে, এই মানগুলির সর্বাধিক প্রদান করে।

একটি সংক্ষিপ্ত সংস্করণ দেখতে আকর্ষণীয় হবে।


1

রেটিনা , 24 বাইট

L$v`(.*).*\1
$.1
N`
G-1`

এটি অনলাইন চেষ্টা করুন!

রেটিনা 1 এর নতুন বৈশিষ্ট্যগুলি শিখতে আমার জন্য একটি উষ্ণতা।

ব্যাখ্যা

L$v`(.*).*\1
$.1

একটি তালিকার মঞ্চ, এটি রেগেক্সের জন্য সমস্ত ম্যাচ ফেরত দেয় (.*).*\1, যা "এবিএ" ফর্মের যে কোনও প্যাটার্নের সাথে মেলে, যেখানে এ এবং বি দুটি স্বেচ্ছাসেবী সাবস্ট্রিং (সম্ভবত শূন্য)। এই পর্যায়ে দেওয়া অতিরিক্ত বিকল্পগুলি হ'ল vওভারল্যাপিং ম্যাচগুলিকে বিবেচনা করে এবং $এটি ফিরে আসার আগে প্রতিটি ম্যাচের প্রতিস্থাপন প্রয়োগ করে: প্রতিস্থাপনটি দ্বিতীয় লাইনে নির্দেশিত হয়, এবং .প্রথম ক্যাপচারিং গ্রুপের দৈর্ঘ্যের সাথে মিলে যায় ( যা পূর্ববর্তী উদাহরণে "A" টি স্ট্রিং হবে)।

N`

আমাদের কাছে এখন পুনরাবৃত্ত সাবস্ট্রিংগুলির সমস্ত দৈর্ঘ্য রয়েছে, এই পর্যায়ে কেবল সংক্ষিপ্ত থেকে দীর্ঘতম অবধি তাদের সংখ্যাসূচকভাবে সাজানো হয়।

G-1`

অবশেষে, এই গ্রেপ পর্যায়টি ( G) কেবল সর্বশেষ ( -1) ফলাফল রাখে , যা দীর্ঘতম পুনরাবৃত্ত স্ট্রস্ট্রিংয়ের দৈর্ঘ্য।


0

জাভাস্ক্রিপ্ট, 165 বাইট

function a(s){var l=s.length/2,z=1,f='';while(z<=l){var t=s.substr(0,z),c=0;for(var i=0;i<s.length;i++){if(s.substr(i,z)===t){c++;if(c>1){f=t}}}z++}return f.length}

পরীক্ষার মামলা

console.log(a('abcabcabcabc')) // Output 6
console.log(a('xyz'))          // Output 0
console.log(a('aaaaaaa'));     // Output 3
console.log(a('abcdefabc'));   // Output 3

2
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম। দুর্ভাগ্যক্রমে, এটি ইনপুটটির জন্য 2 ফেরত দেয় ababcabcabcabcabতবে স্ট্রিংটি cabcabপুনরাবৃত্তি হয়।
ডেনিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.