কোপল্যান্ড - এরদ এর ধ্রুবকের মধ্যে সংখ্যাগুলি সন্ধান করুন


17

পটভূমি

কোপল্যান্ড-Erdős ধ্রুবক "0." এর সংযুক্তকরণের হয় মূল সংখ্যাটি 10 ​​অনুসারে ক্রম অনুসারে এর মান

0.23571113171923293137414...

OEIS A033308 এও দেখুন ।

কোপল্যান্ড এবং এরদেস প্রমাণ করেছেন যে এটি একটি সাধারণ সংখ্যা । এটি সূচিত করে যে প্রতিটি প্রাকৃতিক সংখ্যা কোপল্যান্ড-এর্ডের ধ্রুবকের দশমিক প্রসারণের কোনও পর্যায়ে পাওয়া যায়।

চ্যালেঞ্জ

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে, এটি বেস 10 এ প্রকাশ করুন (জিরোগুলি অগ্রণী না করে) এবং কোপল্যান্ড – এর্ডের ধ্রুবকের দশমিক অঙ্কের অনুক্রমের মধ্যে এর প্রথম উপস্থিতির সূচকে আউটপুট দিন।

কোনও যুক্তিসঙ্গত ইনপুট এবং আউটপুট ফর্ম্যাট অনুমোদিত, কিন্তু ইনপুট এবং আউটপুট 10 বেসে হওয়া উচিত বিশেষত, ইনপুটটি স্ট্রিং হিসাবে পড়া যেতে পারে; এবং সেক্ষেত্রে এটি ধরে নেওয়া যেতে পারে যে নেতৃস্থানীয় শূন্যগুলি নেই।

ধ্রুবকের প্রথম দশমিক থেকে শুরু করে আউটপুট 0-ভিত্তিক বা 1-ভিত্তিক হতে পারে।

প্রকৃত ফলাফল ডেটা টাইপ, মেমরি বা কম্পিউটিং পাওয়ার দ্বারা সীমাবদ্ধ হতে পারে এবং এইভাবে প্রোগ্রামটি কিছু পরীক্ষার ক্ষেত্রে ব্যর্থ হতে পারে। কিন্তু:

  • কোনও ইনপুট দেওয়ার জন্য এটি তত্ত্বের (অর্থাৎ এই সীমাবদ্ধতাগুলিকে বিবেচনায় না নেওয়ার) কাজ করা উচিত।
  • কমপক্ষে প্রথম চারটি ক্ষেত্রে এটি অনুশীলনে কাজ করা উচিত এবং তাদের প্রত্যেকের জন্য ফল এক মিনিটেরও কম সময়ে প্রকাশ করা উচিত।

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

আউটপুট এখানে 1-ভিত্তিক হিসাবে দেওয়া হয়।

13       -->         7   # Any prime is of course easy to find
997      -->        44   # ... and seems to always appear at a position less than itself
999      -->      1013   # Of course some numbers do appear later than themselves
314      -->       219   # Approximations to pi are also present
31416    -->     67858   # ... although one may have to go deep to find them
33308    -->     16304   # Number of the referred OEIS sequence: check
36398    -->     39386   # My PPCG ID. Hey, the result is a permutation of the input!
1234567  -->  11047265   # This one may take a while to find


ঠিক আছে, তাহলে বিজয়ী মানদণ্ড কী?
ব্যবহারকারী 8397947

আই / ও সম্পর্কিত বিস্তারিত বিধি বিবেচনা করে, আমি এই কোড গল্ফ হিসাবে ধরে নিচ্ছি এবং ট্যাগটি প্রয়োগ করব। আমি আশা করি এটি আপনার মনে ছিল।
ডেনিস

@ ডেনিস হ্যাঁ, দুঃখিত, আমি ভুলে গেছি। সম্পাদনার জন্য ধন্যবাদ
লুইস মেন্ডো

3
সম্পর্কিত
চ্যাম্পারনেউন

উত্তর:


6

05 এ বি 1 ই , 14 বাইট

0-ইনডেক্সড আউটপুট ব্যবহার করে । ওসাবীতে প্রাইম ফাংশনগুলি খুব অদক্ষ। কোড:

[NØJD¹å#]¹.Oð¢

ব্যাখ্যা:

[       ]        # Infinite loop...
 N               # Get the iteration value
  Ø              # Get the nth prime
   J             # Join the stack
    D            # Duplicate this value
     ¹å#         # If the input is in this string, break out of the loop
         ¹.O     # Overlap function (due to a bug, I couldn't use the index command)
            ð¢   # Count spaces and implicitly print

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


7

পাইথন 2, 64 বাইট

f=lambda n,k=2,m=1,s='':-~s.find(`n`)or f(n,k+1,m*k*k,s+m%k*`k`)

1-ভিত্তিক সূচক প্রদান করে। আইডিয়নে এটি পরীক্ষা করুন ।


5

জেলি , 17 বাইট

ÆRDFṡL}i
Ḥçßç?
çD

1-ভিত্তিক সূচক প্রদান করে। এটি অনলাইন চেষ্টা করুন! বা বেশিরভাগ পরীক্ষার কেস যাচাই করুন

আমি স্থানীয়ভাবে সর্বশেষ পরীক্ষার কেসটি যাচাই করেছি; এটি 8 মিনিট 48 সেকেন্ড সময় নিয়েছে।

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

çD        Main link. Argument: n (integer)

 D        Decimal; yield A, the array of base 10 digits of n.
ç         Call the second helper link with arguments n and A.


Ḥçßç?     Second helper link. Left argument: n. Right argument: A.

Ḥ         Unhalve; yield 2n.
    ?     If...
   ç        the first helper link called with 2n and A returns a non-zero integer:
 ç            Return that integer.
          Else:
  ß           Recursively call the second helper link with arguments 2n and A.


ÆRDFṡL}i  First helper link. Left argument: k. Right argument: A.

ÆR        Prime range; yield the array of all primes up to k.
  DF      Convert each prime to base 10 and flatten the resulting nested array.
     L}   Yield l, the length of A.
    ṡ     Split the flattened array into overlapping slices of length l.
       i  Find the 1-based index of A in the result (0 if not found).

বিকল্প সংস্করণ, 11 বাইট (প্রতিযোগী নয়)

ÆRVw³
ḤÇßÇ?

wপরমাণু উপস্থিত করেনি এই চ্যালেঞ্জ পোস্ট করা হয়েছে। এটি অনলাইন চেষ্টা করুন!

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

ḤÇßÇ?  Main link. Argument: n (integer)

Ḥ      Unhalve; yield 2n.
    ?  If...
   Ç     the helper link called with argument 2n returns a non-zero integer:
 Ç         Return that integer.
       Else:
  ß      Recursively call the main link with argument 2n.


ÆRVw³  Helper link. Argument: k (integer)

ÆR     Prime range; yield the array of all primes up to k.
  V    Eval; concatenate all primes, forming a single integer.
    ³  Yield the first command-line argument (original value of n).
   w   Windowed index of; find the 1-based index of the digits of the result to
       the right in the digits of the result to the left (0 if not found).

4

আসলে, 19 বাইট

╗1`r♂Pεj╜@íu`;)╓i@ƒ

ইনপুট হিসাবে একটি স্ট্রিং নেয় এবং স্ট্রিংয়ের 1-ভিত্তিক সূচককে আউটপুট করে

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

ব্যাখ্যা:

╗1`r♂Pεj╜@íu`;)╓i@ƒ
╗                    push input to register 0
  `r♂Pεj╜@íu`;)      push this function twice, moving one copy to the bottom of the stack:
   r♂Pεj               concatenate primes from 0 to n-1 (inclusive)
        ╜@íu           1-based index of input, 0 if not found
1              ╓     find first value of n (starting from n = 0) where the function returns a truthy value
                i@   flatten the list and move the other copy of the function on top
                  ƒ  call the function again to get the 1-based index

3

জুলিয়া, 55 বাইট

\(n,s="$n",r=searchindex(n|>primes|>join,s))=r>0?r:3n\s

1-ভিত্তিক সূচক প্রদান করে। এক সেকেন্ডের অধীনে সমস্ত পরীক্ষার কেস সম্পন্ন করে। এটি অনলাইন চেষ্টা করুন!


আপনি প্রাইমগুলি উপরের দ্বারা আবদ্ধ 3এবং উদাহরণস্বরূপ দ্বারা সরিয়ে না দেওয়ার কোনও কারণ আছে কি 2? এছাড়াও, এর 0চেয়ে কম ইনপুটটিতে কাজ করার জন্য কি এটি বাড়ানোর কোনও উপায় আছে ...=r>0?r:3(n+9)\s?
চার্লি

32আমার পরীক্ষাগুলির তুলনায় কিছুটা দ্রুত ছিল এবং বাইট সংখ্যা বাড়েনি increase ইনপুট জন্য 0, আপনি -~nপরিবর্তে ব্যবহার করতে পারেন , তবে এটি অনেক ধীর হবে।
ডেনিস

ধন্যবাদ, -~3n\s(== (3n+1)\s) যথেষ্ট ভাল।
চার্লি


2

জে , 37 বাইট

(0{":@[I.@E.[:;<@":@p:@i.@]) ::($:+:)

ইনপুট বেস 10 পূর্ণসংখ্যা হিসাবে দেওয়া হয় এবং আউটপুট শূন্য-ভিত্তিক সূচক ব্যবহার করে।

ব্যবহার

   f =: (0{":@[I.@E.[:;<@":@p:@i.@]) ::($:+:)
   f 1
4
   f 13
6
   f 31416
67857

ব্যাখ্যা

এই প্রথম কলটি ক্রিয়াপদকে একটি মোনাড হিসাবে বিবেচনা করে, তবে পরবর্তী কলগুলি যা পুনরাবৃত্তি হতে পারে এটি ডায়াড হিসাবে বিবেচনা করে।

0{":@[I.@E.[:;<@":@p:@i.@]  Input: n on LHS, k on RHS
                         ]  Get k
                      i.@   Get the range [0, 1, ..., k-1]
                   p:@      Get the kth prime of each
                ":@         Convert each to a string
              <@            Box each string
           [:;              Unbox each and concatenate to get a string of primes
     [                      Get n
  ":@                       Convert n to a string
      I.@E.                 Find the indices where the string n appears in
                            the string of primes
0{                          Take the first result and return it - This will cause an error
                            if there are no matches

(...) ::($:+:)  Input: n on RHS, k on LHS
(...)           Execute the above on n and k
      ::(    )  If there is an error, execute this instead
           +:   Double k
         $:     Call recursively on n and 2k

1
আপনি কি প্রমাণ করতে পারেন যে এটি কাজ করে?
ফাঁস নুন

@ ল্যাকইনুন ওহ হ্যাঁ সত্য, এটি প্রযুক্তিগতভাবে কেবল পরীক্ষার ক্ষেত্রে কাজ করে তবে এটি প্রথম এন প্রাইমগুলিতে পাওয়া যায় না ।
মাইল 9

এটি এন = 1 এর জন্য কাজ করে না যেহেতু প্রথম প্রাইম 2 হয় এবং আপনাকে প্রথম পাঁচটি প্রাইমস প্রয়োজন 1 এর প্রথম উপস্থিতিটি পেতে
মাইল

1

পাওয়ারশেল ভি 2 +, 90 বাইট

for($a="0.";!($b=$a.IndexOf($args)+1)){for(;'1'*++$i-match'^(?!(..+)\1+$)..'){$a+=$i}}$b-2

আমার যুক্তি যুক্ত করে চ্যাম্পারনেউন ধ্রুবক উত্তরের সংখ্যাটি সন্ধান করুন , আমার প্রিন্টের প্রাইম প্রজন্মের পদ্ধতিটির সাথে মিলিয়ে নম্বরের প্রাইম রয়েছে , তারপরে 2সূচকটি যথাযথভাবে আউটপুট করতে হবে (যেমন, গণনা গণনা করা হচ্ছে না)0. শুরুতে করা) ।

স্ট্রিং হিসাবে ইনপুট নেয়। 999আমার মেশিনে প্রায় সাত সেকেন্ডের মধ্যে একটিটি আবিষ্কার করে তবে একটিটি 33308বেশ খানিকক্ষণের মধ্যে ( সম্পাদনা করুন - আমি 90 মিনিটের পরে ছেড়ে দিয়েছি )। তাত্ত্বিকভাবে সূচক [Int32]::Maxvalueওরফে পর্যন্ত কোনও মানের জন্য কাজ করা উচিত 2147483647, কারণ এটি নেট। স্ট্রিংয়ের সর্বাধিক দৈর্ঘ্য। তবে এটি হওয়ার অনেক আগে মেমরির সমস্যার সমাধান হবে।

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