এটি কি পুনরাবৃত্তি করে?


20

অক্ষরের একটি স্ট্রিং পুনরাবৃত্তি করে যদি এটিতে পরপর দুটি সাবস্ট্রিং থাকে যা সমান।

উদাহরণস্বরূপ, 2034384538452এটি পুনরাবৃত্তি করে যেমন এটি 3845দু'বার, ক্রমাগতভাবে।

অতএব, আপনার চ্যালেঞ্জটি স্থির করে যে কোনও স্ট্রিংয়ে পুনরাবৃত্তি করা স্ট্রিং থাকে কিনা তা সিদ্ধান্ত নেওয়া। আপনি ইনপুটটিকে স্ট্রিং বা অক্ষরের অ্যারে হিসাবে নিতে পারেন।

আপনি কখনই একটি খালি ইনপুট পাবেন না এবং সাবস্ট্রিংয়ের দৈর্ঘ্য (এটি উপস্থিত থাকলে) 1 বা তার বেশি হতে পারে।

আমি ব্যবহার 1এবং 0এখানে আমার truthy এবং falsy মান হিসাবে, কিন্তু আপনি যতদিন তারা truthy এবং আপনার ভাষায় falsy হয় বিভিন্ন মান ব্যবহার হতে পারে।

উদাহরণ:

abcab -> 0
bdefdefg -> 1
Hello, World! -> 1
pp.pp/pp -> 1
q -> 0
21020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021012102012101202102012021012102012021020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020120210201210120210201202101210201210120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120 -> 0

(থু-মোর্স ক্রমের প্রতিটি শূন্যের মধ্যে যে পরিমাণ রয়েছে তার থেকে শেষ উদাহরণটি উত্পন্ন হয়েছিল)


2
যতক্ষণ না তারা যথাযথভাবে সত্যবাদী বা মিথ্যা হয় ততক্ষণ আমি কি বেমানান মানগুলি ব্যবহার করতে পারি?
এরিক দি আউটগল্ফার

@ এরিকথ আউটগলফার অবশ্যই
Okx

@ ট্রাইকোপলাক্স আমি মনে করি তার অর্থ দৈর্ঘ্যের ধারাবাহিক অনুচ্ছেদ> = ১।
এরিক আউটগল্ফার

@ এরিকথিউটগলফার "পরপর" শব্দটি আমার অনুপস্থিত ছিল। ধন্যবাদ - এটি এখন নিখুঁত করে তোলে।
ট্রিকোপল্যাক্স

এর পরিবর্তে আমরা কি ভুয়া জন্য 1 এবং সত্যের জন্য 0 আউটপুট দিতে পারি?
ক্রিটসি লিথোস

উত্তর:




7

জেলি , 6 5 বাইট

Ẇµ;"f

এটি একটি সম্পূর্ণ প্রোগ্রাম। টিআইও সর্বশেষ পরীক্ষার কেসটি কেটে না নিয়ে পরিচালনা করতে পারে না।

এটি অনলাইন চেষ্টা করুন! (সর্বশেষ পরীক্ষার কেসটি 250 ডিজিটে কেটে গেছে)

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

Ẇµ;"f  Main link. Argument: s (string)

Ẇ      Words; generate all substrings of s.
 µ     New chain. Argument: A (substring array)
  ;"   Vectorized concatenation; concatenate each substring with itself.
    f  Filter; keep "doubled" substrings that are also substrings.
       This keeps non-empty string iff the output should be truthy, producing
       non-empty output (truthy) in this case and empty output (falsy) otherwise.

5

গণিত, 32 বাইট

StringMatchQ[___~~x__~~x__~~___]

এর জন্য কি পুনরাবৃত্তি করা স্ট্রিং উপচ্ছেদের সংলগ্ন হওয়া দরকার হয় না?
ডেভিডসি

1
@ সোয়েতলানা, আপনি সঠিক! আমি আবকাব-> 0 অ্যাকাউন্টে নিইনি।
ডেভিডসি

1
StringContainsQ[x__~~x__]এবং !StringFreeQ[#,x__~~x__]&উভয় খাটো হয়।
নেজেনিসিস



4

পাইথন , 38 বাইট

import re
re.compile(r'(.+)\1').search

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

হ্যাঁ, একটি রেজেক্স স্ট্রিংটিতে .+সেই একই স্ট্রিংয়ের পরে আরও একটি অক্ষরের একটি স্ট্রিং রয়েছে যা সবেমাত্র ক্যাপচার করা হয়েছে কিনা তা পরীক্ষা করে। আউটপুট অনুসন্ধান অবজেক্টটি সত্যবাদী যদি কমপক্ষে একটি মিল থাকে তবে যাচাই করা যেতে পারেbool

compileএখানে ব্যবহার করা একটি ল্যাম্বডা লেখার উপর সংরক্ষণ করে:

lambda s:re.search(r'(.+)\1',s)

পাইথন , 54 বাইট

f=lambda s:s>''and(s in(s*2)[1:-1])|f(s[1:])|f(s[:-1])

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

দুটি হিসাবে অধিক সমান স্ট্রিং সংমিশ্রিত গঠিত এমন একটি স্ট্রস্ট্রিং অনুসন্ধান করে s in(s*2)[1:-1]যেমন হিসাবে হিসাবে পরীক্ষা করা হয়এই উত্তরের । প্রথম বা শেষের অক্ষর কেটে বেছে বেছে সাবস্ট্রিংগুলি পুনরাবৃত্তভাবে উত্পন্ন হয়। এটি ক্ষতিকারক, তাই এটি বড় পরীক্ষার ক্ষেত্রে পুনরুদ্ধার করে।

মিস মিস্:

f=lambda s,p='':s and(s==p)*s+f(s[1:],p+s[0])+f(s[:-1])
f=lambda s,i=1:s[i:]and(2*s[:i]in s)*s+f(s[1:])+f(s,i+1)

প্রথমটি inসাবস্ট্রিংগুলি পরীক্ষা করার জন্য পাইথন ব্যবহার করে না এবং এটি অন্য ভাষায় মানিয়ে নিতে পারে।


4

পাইথ - 10 9 8 বাইট

f}+TTQ.:

সমস্ত পুনরাবৃত্ত সাবস্ট্রিংগুলির একটি তালিকা ফেরত দেয় (যা যদি না থাকে তবে একটি খালি তালিকা, যা মিথ্যা বলে)

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

ব্যাখ্যা:

f}+TTQ.:
      .:    # All substrings of the input (implicit):
f           # filter the list of substrings T by whether...
  +TT       # ...the concatenation of the substring with itself...
 }   Q      # ...is a substring of the input

1
যদি আপনি ধরে নেন যে ইনপুটটি উদ্ধৃতিতে রয়েছে f}+TTQ.:1 বাইট কম থেকে কাজ করে: লিঙ্ক
কার্লকাস্টোর



2

পাইথন 3 , 73 66 বাইট

-7 বাইটস @ লিক্যুনকে ধন্যবাদ জানায়

lambda s:any(2*s[j:i]in s for i in range(len(s))for j in range(i))

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




2

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

{?/(.+)$0/}

এটা পরীক্ষা করো

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

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

  ?      # Boolify the following
         # (need something here so it runs the regex instead of returning it)

  /      # a regex that implicitly matches against 「$_」
    (.+) # one or more characters stored in $0
     $0  # that string of characters again
  /
}

2

পিএইচপি, 32 বাইট

<?=preg_match('#(.+)\1#',$argn);

পাইপ হিসাবে চালান -F। দুঃখিত জার্গ, আমি লক্ষ্য করিনি যে আপনিও এটি পোস্ট করেছিলেন

নন-রেজেক্স সংস্করণ, 84 82 বাইট

    for($s=$argn;++$e;)for($i=0;~$s[$i];)substr($s,$i,$e)==substr($s,$e+$i++,$e)&&die

0পুনরাবৃত্তির জন্য রিটার্ন কোড সহ প্রস্থান করে , কারও জন্য বার বার (এবং ত্রুটির সাথে প্রস্থান করে)। পাইপ হিসাবে চালান -nr
ধরে নেওয়া যায় ছাপার যোগ্য এএসসিআইআই ইনপুট; প্রতিস্থাপন ~সঙ্গে a&কোনো হওয়া ASCII জন্য।


1

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

s=>/(.+)\1/.test(s)

কীভাবে /(.+)\1/.test?
লুক

আমার কাছে এটিই রয়েছে, @ লুক
শেগি

@ শেগি আমি বিশ্বাস করি তিনি /(.+)\1/.testনিজেকে সম্পূর্ণ জমা হিসাবে বোঝান ।
ফাঁস নুন

@ লুক এউবাউন্ড /(.+)\1/.test(কোনও নেই this)। f=/(.+)\1/.test;f('aa')উদাহরণস্বরূপ, কাজ করবে না। আপনার প্রয়োজন হবে/./.test.bind(/(.+)\1/)
আরটিয়ার

আপনি এতে গল্ফ করতে পারেন: ::/(.+)\1/.test(15 বাইট)
ডাউনগোট


1

ভি , 6 বাইট

ø¨.«©±

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

পরীক্ষা স্যুট!

প্রোগ্রাম আউটপুট 0 মিথ্যা মানগুলির জন্য ফলাফল এবং ধনাত্মক মানগুলির জন্য একটি ধনাত্মক পূর্ণসংখ্যা।

(দ্রষ্টব্য যে এখানে একটি ছোট বাগ ছিল, সুতরাং আমাকে 1 বাইট অর্জন করতে হয়েছিল Now এখন বাগফিক্সের পরে, আমি এর সাথে প্রতিস্থাপন করতে সক্ষম হব \x82)

ব্যাখ্যা

ø                     " This is a recent addition to V. This command takes in a regex
                      " and replaces the line with the number of matches of the regex
 ¨.«©±                " The compressed regex. This decompresses to \(.\+\)\1

1

জাপট, 8 + 1 = 9 8 বাইট

f"(.+)%1

এটি অনলাইনে চেষ্টা করুন । আউটপুটnullমিথ্যা জন্য , এবং সত্যের জন্য সমস্ত পুনরাবৃত্তি স্ট্রিং সমন্বিত একটি অ্যারে।

ব্যাখ্যা

 f"(.+)%1
Uf"(.+)%1" # Implicit input and string termination
Uf         # Find in the input
  "(.+)%1" #   a sequence followed by itself
 f         # and return the matched substring
           # output the return value

বেমানান আউটপুট মানগুলি অনুমোদিত তাই আপনি èম্যাচের সংখ্যা ফেরত দিতে এবং পতাকাটি ফেলে দিতে ব্যবহার করতে পারেন।
শেগি

হ্যাঁ। ম্যাচটি নিজেই ফেরত nullদেওয়ার জন্য আমি পতাকাটিও ফেলে দিতে পারি, কারণ কোনও ম্যাচের রিটার্নই মিথ্যা নয়।
লুক

ইনপুট জন্য 00, এটি আউটপুট 00। আপনি কি নিশ্চিত যে এটি জাপটে সত্যবাদী?
Okx

@ ওকএক্স স্ট্রিংটি "00"হল।
ETH প্রোডাকশনগুলি

@Okx; এই চেষ্টা করুন । -Qফ্ল্যাগ "prettyprints" আউটপুট যাতে আপনি দেখতে পারেন যে এটি একটি একক পংক্তি ধারণকারী একটি অ্যারে।
শেগি

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