>> 1000 ডিজিটের সংখ্যা থেকে সবচেয়ে ছোট সময়কাল সন্ধান করুন


10

আপনার কাজ হ'ল এই সংখ্যাটি ইনপুট হিসাবে নেওয়া (যদিও এটি অন্য কোনও সংখ্যার সাথেও কাজ করা উচিত):

18349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957

এবং সবচেয়ে ক্ষুদ্রতম সময়টি সন্ধান করুন যা এই ক্ষেত্রে:

1834957034571097518349570345710975183495703457109751834957034571097518349570345710976

গুড লাক এবং মজা আছে!


স্পষ্টতা :

  • ইনপুট নম্বরটিতে সর্বনিম্ন এক পিরিয়ড এবং একটি আংশিক সময়কাল থাকে
  • পিরিয়ডটি সর্বদা ইনপুট সংখ্যার শুরুতে শুরু হয়
  • পিরিয়ড মানে এই ক্ষেত্রে সংখ্যার ক্রম যা নিজেকে পুনরাবৃত্তি করে।

ইনপুট সংখ্যার সর্বোচ্চ আকার কত? আপনি যদি বোঝাতে চান যে 1000 সর্বোচ্চ আকার, আপনার >ভুল পথে রয়েছে।
স্তর

@ স্টিভেভারিল: না, প্রতি সেপি ইনপুট সংখ্যার সর্বাধিক আকার নেই, তবে আসুন এটি 2 ^ 16 ডিজিটের মধ্যে সীমাবদ্ধ করুন (কারণ আপনি জিজ্ঞাসা করেছেন)।
মাইকেল বলি

3
পিরিয়ড কাকে বলে?
FUZxxl

এই ক্ষেত্রে @FUZxxl: সংখ্যার ক্রম যা নিজেকে পুনরাবৃত্তি করে।
মাইকেল বলি

3
আপনি যা জিজ্ঞাসা করছেন তা পরিষ্কার, তবে আপনার সত্যিকার অর্থে এটিকে একটি সময়কালের মতো বলা উচিত নয়: গণিতে, একটি সময়কাল কেবলমাত্র দশমিক পয়েন্টের পরে বহুবার অসীম পুনরাবৃত্তি হওয়ার পরে অঙ্কগুলিকে বোঝায় । বিপরীতে, আপনার পরীক্ষার ইনপুটটি একটি পূর্ণসংখ্যা এবং সীমাবদ্ধ অঙ্কের সংখ্যা।
0

উত্তর:


4

সিজেম, 20 16 বাইট

Ll:Q{+_Q,*Q#!}=;

এসটিডিআইএন থেকে পড়া। এটি অনলাইনে চেষ্টা করুন।

উপরের কোডটির জন্য ও (এন 2 ) মেমরির প্রয়োজন হবে , যেখানে এন ইনপুটটির দৈর্ঘ্য। যতক্ষণ আপনার পর্যাপ্ত স্মৃতি থাকে ততক্ষণ এটি 2 16 অঙ্কের সাথে কাজ করবে

এটি পাঁচটি অতিরিক্ত বাইটের জন্য নির্ধারণ করা যেতে পারে:

Ll:Q{+_Q,1$,/)*Q#!}=;

উদাহরণ রান

$ cjam <(echo 'Ll:Q{+_Q,*Q#!}=;') <<< 18349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957; echo
1834957034571097518349570345710975183495703457109751834957034571097518349570345710976
$ cjam <(echo 'Ll:Q{+_Q,*Q#!}=;') <<< 12345123451; echo
12345
$ cjam <(echo 'Ll:Q{+_Q,*Q#!}=;') <<< 1234512345; echo
12345
$ cjam <(echo 'Ll:Q{+_Q,*Q#!}=;') <<< 123451; echo
12345

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

ইনপুট কিউয়ের জন্য ধারণাটি হ'ল প্রথম অক্ষর লেন (কিউ) বার পুনরাবৃত্তি করা উচিত এবং ফলাফলের Q এর সূচক 0 হয় কিনা তা পরীক্ষা করা হয় যদি তা না হয় তবে প্রথম দুটি অক্ষর লেন (কিউ) বার পুনরাবৃত্তি করুন , ইত্যাদি etc.

L                   " Push L := [].                                                       ";
 l:Q                " Read one line from STDIN and save the result in Q.                  ";
    {        }=     " Find the first element q ∊ Q that yields a truthy value:            ";
     +              "   Execute L += [q].                                                 ";
      _Q,*Q#        "   Push (L * len(Q)).index(Q).                                       ";
            !       "   Compute the logical NOT of the index.                             ";
               ;    " Discard the last q. This leaves L on the stack.                     ";

8

Regex (.NET গন্ধ), 23 22 বাইট

.+?(?=(.*$)(?<=^\1.*))

এটি স্ট্রিং হিসাবে প্রয়োজনীয় সময়ের সাথে মিলবে।

এটি এখানে পরীক্ষা করুন।

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

# The regex will always find a match, so there's no need to anchor it to
# the beginning of the string - the match will start there anyway.
.+?        # Try matching periods from shortest to longest
(?=        # Lookahead to ensure that what we've matched is actually
           # a period. By using a lookahead, we ensure that this is
           # not part of the match.
  (.*$)    # Match and capture the remainder of the input in group 1.
  (?<=     # Use a lookahead to ensure that this remainder is the same
           # as the beginning of the input. .NET lookaheads are best
           # read from right to left (because that's how they are matched)
           # so you might want to read the next three lines from the 
           # bottom up.
    ^      # Make sure we can reach the beginning of the string.
    \1     # Match group 1.
    .*     # Skip some characters, because the capture won't cover the
           # entire string.
  )
)

1
যদিও স্ট্রিংয়ের শুরুতে পিরিয়ড শুরু হয় তবে এটি কাজ করে। এখানে ঘটনাটি ঘটবে তবে আমি চশমাগুলিতে এটি দেখতে পাচ্ছি না। রাইট?
টিম পিটজ্যাকার

1
@ টিমপিয়েটজেকার প্রশ্নের ওপির মন্তব্য / সম্পাদনা দেখুন: পিরিয়ডটি সর্বদা স্ট্রিংয়ের শুরুতে শুরু হয়।
মার্টিন ইন্ডার

রেজেক্স স্টর্ম। নেট হ্যান্ডেল হিসাবে মনে হয়। নেটও , এবং এটির জন্য সিলভারলাইটের প্রয়োজন নেই (বেশিরভাগ প্ল্যাটফর্মগুলিতে অনুপলব্ধ)।
ডেনিস

@ ডেনিস ধন্যবাদ, আমি সেটিকে জানতাম না!
মার্টিন এন্ডার

1
@ টলোস কারণ এটি আপনি নিশ্চিত করেন না যে আপনি স্ট্রিংয়ের শেষে পৌঁছে যেতে পারবেন। সুতরাং এটি কেবল প্রথম জিনিসটি ব্যবহার করবে যা একেবারে পুনরাবৃত্তি করে। উদাহরণস্বরূপ aabaabaabসম্ভবত aএটি মিলবে কারণ এটি পুনরাবৃত্তি করে। এটি এখনও পিসিআরই এ সমাধান করার উপায় খুঁজে পাই নি। ডেনিস এখন মুছে ফেলা উত্তরে চেষ্টা করেছিল, কিন্তু সে পুরোপুরি কোনওভাবেই কাজ করে না। বিটিডব্লিউ, আপনার দরকার নেই g
মার্টিন এণ্ডার

3

পাইথন 60

s অঙ্কের স্ট্রিং

[s[:i]for i in range(len(s))if(s[:i]*len(s))[:len(s)]==s][0]

উদাহরণ:

>>> s = '18349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957034571097518349570345710975183495703457109761834957034571097518349570345710975183495703457109751834957034571097518349570345710976183495703457109751834957034571097518349570345710975183495703457109751834957034571097618349570345710975183495703457109751834957'
>>> [s[:i]for i in range(len(s))if(s[:i]*len(s))[:len(s)]==s][0]
'1834957034571097518349570345710975183495703457109751834957034571097518349570345710976'

1

পাইথ , 14 টি অক্ষর

hf}z*lzTm<zdUz

ব্যাখ্যা:

implicit:      z = input()
h              head(
 f                  filter(lambda T:
  }z                                z in
    *lz                                  len(z) * 
       T                                          T,
  m                        map(lambda d:
   <zd                                  z[:d],
   Uz                                   range(len(d)))))

মূলত, এটি ইনপুটটির সমস্ত প্রাথমিক ক্রম উত্পন্ন করে, প্রতিটি একবারে পুনরাবৃত্তি করে এবং ফলাফলটি স্ট্রিংয়ের মধ্যে ইনপুট থাকে len(z)কিনা তা দেখায় z


এটি কোনও বৈধ উত্তর নয়, তবে সম্প্রতি একটি বৈশিষ্ট্য পাইথের সাথে যুক্ত করা হয়েছিল, প্রশ্নটি জিজ্ঞাসা করার পরে, এটি একটি 12 টি চরিত্রের সমাধানের অনুমতি দেয়:

<zf}z*lz<zT1

এটি পূর্ণসংখ্যার বৈশিষ্ট্যটিতে ফিল্টারটি ব্যবহার করে।


0

জাপট , 8 বাইট

å+ æ@¶îX

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

-২ বাইট শ্যাগিকে ধন্যবাদ!

রূপান্তরিত জেএস ব্যাখ্যা:

// U is the input string representation of the number
U
 // cumulative reduce using the '+' operator
 // the result is an array of strings length 1, 2, ..., N
 // all substrings start with the first character from input
 .å("+")
 // find the first match
 .æ(function(X, Y, Z) {
  // repeat the substring until it is as long as the input
  // and compare it to the input
  return U === U.î(X)
 })

1
8 বাইট:å+ æ@¶îX
শেগি

দুর্দান্ত :) আমি আগে অপারেটরটিকে হ্রাস ফাংশনে নিক্ষেপ করতে দেখেছি, তবে এটি ভুলে গিয়েছি।
দানা

0

জাভা 8, 125 বাইট

স্ট্রিং হিসাবে ইনপুট নেয় যেহেতু জাভাতে কোনও স্ট্রিং ব্যতীত 1000+ ডিজিটের সংখ্যা উপস্থাপনের কোনও যুক্তিসঙ্গত উপায় নেই (দয়া করে কোনও বিগইন্টিজার নেই)।

s->{String o="";for(int i=0;java.util.Arrays.stream(s.split(o+=s.charAt(i++))).filter(b->!b.isEmpty()).count()>1;);return o;}

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


আপনি Stringvar সঙ্গে প্রতিস্থাপন করতে পারেন । -3 বাইট
অ্যাডাম

@Adam জাভা 8 যদিও
বেঞ্জামিন Urquhart

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