কনওয়ের প্রাইম গেম


18

বিশেষত, কনওয়ের প্রাইমগেম

এটি 14 জন যুক্তিযুক্ত সংখ্যার ক্রম ব্যবহার করে প্রাইম জেনার জন্য জন এইচ। কনওয়ের তৈরি একটি অ্যালগরিদম:

 A   B   C   D   E   F   G   H   I   J   K   L   M   N
17  78  19  23  29  77  95  77   1  11  13  15  15  55
--  --  --  --  --  --  --  --  --  --  --  --  --  --
91  85  51  38  33  29  23  19  17  13  11  14   2   1

উদাহরণস্বরূপ, F হল ভগ্নাংশ 77/29

সুতরাং এখানে কীভাবে অ্যালগোরিদমটি প্রাথমিক সংখ্যাগুলি সন্ধান করে। সংখ্যাটি দিয়ে শুরু করে 2, ক্রমের প্রথম এন্ট্রিটি সন্ধান করুন যা একসাথে গুণিতকালে একটি পূর্ণসংখ্যা উত্পাদন করে। এখানে এটা M, 15/2যা উৎপন্ন করে 15। তারপরে, সেই পূর্ণসংখ্যার জন্য 15, ক্রমের প্রথম এন্ট্রি সন্ধান করুন যেটি যখন গুণিতক একটি পূর্ণসংখ্যা তৈরি করে। এটিই শেষ N, বা 55/1, যা ফল দেয় 825। সংশ্লিষ্ট ক্রমটি লিখুন। (আপনার মধ্যে বিস্মিত ব্যক্তিরা এটিকে ফ্র্যাক্ট্রান প্রোগ্রাম হিসাবে স্বীকৃতি দিতে পারে ))

কিছু পুনরাবৃত্তির পরে, আপনি নিম্নলিখিত পাবেন:

2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, 910, 170, 156, 132, 116, 308, 364, 68, 4 ...

নোট করুন যে তালিকাভুক্ত শেষ আইটেমটি হ'ল 4, বা 2^22এই অ্যালগরিদম দিয়ে উত্পন্ন আমাদের প্রথম মৌলিক সংখ্যা ( সূচক) দেখুন! পরিণামে, ক্রমটি নিম্নলিখিতগুলির মতো দেখাবে:

2 ... 2^2 ... 2^3 ... 2^5 ... 2^7 ... etc.

সুতরাং, মৌলিক সংখ্যা উপার্জন। এটি OEIS A007542

চ্যালেঞ্জ

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

উদাহরণ

নীচের উদাহরণগুলি nশূন্য-সূচিবদ্ধ ক্রমের দশম আউটপুট দিচ্ছে ।

 n   output
 5   2275
19   4
40   408

বিধি

  • প্রযোজ্য হলে, আপনি ধরে নিতে পারেন যে ইনপুট / আউটপুটটি আপনার ভাষার নেটিভ পূর্ণসংখ্যার প্রকারে ফিট করবে।
  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক পদ্ধতি দ্বারা দেওয়া যেতে পারে ।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরিয়ে দিতে পারেন।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

11
সম্ভবত Conway এর মৌলিক খেলা তুলনায় এই প্রতিদ্বন্দ্বিতায় জন্য আরও বিবরণমূলক নাম হবে আসুন একটি গেম খেলুন গেমটি । ভবিষ্যতে এই চ্যালেঞ্জটি ফিরে পাওয়া সহজ করে তুলবে।
লিন

আউটপুট কি ভাসমান হতে পারে? 408.0পরিবর্তে 408উদাহরণস্বরূপ।
dylnan

দুর্ভাগ্যক্রমে আমাদের কাছে একটি (প্রচলিত) "ইন্টারপ্রেট ফ্র্যাক্ট্রান" চ্যালেঞ্জ নেই। এক স্ট্যাক ওভারফ্লো লক করা আছে।
ব্যবহারকারী 202729

@ এলডানান শিওর, ঠিক আছে।
অ্যাডমবর্কবার্ক

উত্তর:


5

পাইথন 3 , 173 165 153 145 144 136 135 127 126 125 108 107 104 বাইট

f=lambda n:2>>n*2or[f(n-1)*t//d for t,d in zip(b"NM_M\r7",b"[U3&!\r")if f(n-1)*t%d<1][0]

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

  • -30 বাইট জনাথন ফ্রেচকে ধন্যবাদ!
  • -3 বাইট লিনকে ধন্যবাদ!

2>>n*2হয় 2জন্য n==0এবং 0অন্যথায়।

103 বাইট যদি আমরা ভাসা ফিরে আসতে পারি


পাইথন 2 ব্যবহার করা; 153 বাইট
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ দুর্দান্ত, সুন্দর কৌশল ধন্যবাদ!
dylnan

1
পাইথন 3, 146 বাইটে থাকা !
জোনাথন ফ্রেচ


আবারও ধন্যবাদ, আপনি এখন আমার চেয়ে বেশি কিছু করেছেন!
dylnan

5

ফ্রেট্রান , 99 বাইট

17/2821 78/2635 19/1581 23/1178 29/1023 77/899 95/713 77/589 1/527 11/403 13/341 15/434 15/62 55/31

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

প্রোগ্রামটি 2*31^nএকটি ইনপুট হিসাবে গ্রহণ করে , যা প্রাথমিক অবস্থা হিসাবে ব্যবহৃত হয়।

মূল ফ্র্যাক্ট্রান প্রোগ্রামের সমস্ত ভগ্নাংশ 31 দ্বারা ভাগ করা হয়েছে (প্রথম অব্যবহৃত প্রাথমিক নিবন্ধক), তাই প্রোগ্রামটি নবম পুনরাবৃত্তিতে থামে।


চটকদার উত্তর। ;-)
অ্যাডমবার্কবার্ক


3

পাইথন 3 , 107 বাইট

f=lambda n,k=2:n and f(n-1,[k*a//b for a,b in zip(b"NM_M\r7",b"[U3&!\r")if k*a%b<1][0])or k

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

zipদু'জন বাইটস্ট্রিংগুলিকে অপ্রিনিতযোগ্য কম-এএসসিআইআই অক্ষর যুক্ত করে ভগ্নাংশের তালিকাটি এনকোড করে ।

যদি nশূন্য হয়, আমরা যুক্তিটি ফিরিয়ে দিই k; অন্যথায় আমরা নতুন পরামিতিগুলির সাথে পুনরাবৃত্তি করি। আমাদের নতুন kপ্রথম মান k*a//bকিছু ভগ্নাংশ সংশ্লিষ্ট (a, b)যেমন তালিকা যে k*a//bএকটি পূর্ণসংখ্যা, অর্থাত্ k*a%b<1


2

এমএটিএল , 50 বাইট

Hi:"'0m26<l~l *,..V'31-*'{uSFA=731-+."!'32-&\w~)1)

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


3
অনুমান করুন কোডটির কোন অংশটি স্ট্রিং আক্ষরিক এবং কোনটি প্রকৃত বিবৃতি ...
লুইস মেন্ডো

2
Hi:... ওও, কোড আপনাকেও "হ্যালো"। :-)
অ্যাডমবর্কবার্ক

2

জে , 116 110 বাইট

g=.3 :0
((1047856500267924709512946135x%&(96#.inv])5405040820893044303890643137x)([:({.@I.@(=<.){[)*)])^:y 2
)

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

0-ইন্ডেক্স; N-th সংখ্যা প্রদান করে

ক্রিয়াকলাপটিকে প্রশমিত করে কিছু বাইট সংরক্ষণ করা যায় তবে আমার ^:কাজ করতে সমস্যা হয় ।

ব্যাখ্যা:

জে এনআরডি আকারে যুক্তিযুক্ত সংখ্যাগুলি বর্ণনা করেছেন, যেখানে এন সংখ্যাযুক্ত এবং ডি হ'ল বিভাজন, উদাহরণস্বরূপ 17r91 78r85 19r51 23r38...আমি সংখ্যা এবং বিভাজনকারীদের জন্য 2 পৃথক তালিকা তৈরি করেছি এবং সেগুলি থেকে 2 বেস -99 সংখ্যা তৈরি করেছি।

1047856500267924709512946135x%&(96#.inv])5405040820893044303890643137x বেস -৯ numbers সংখ্যাগুলিকে তালিকায় রূপান্তর করে এবং দুটি তালিকা বিভক্ত করে ভগ্নাংশের একটি তালিকা তৈরি করে।

   1047856500267924709512946135x%&(96#.inv])5405040820893044303890643137x
17r91 78r85 19r51 23r38 29r33 77r29 95r23 77r19 1r17 11r13 13r11 15r14 15r2 55

2 2 দিয়ে শুরু করুন

^:yতার বাম nসময়ে ক্রিয়াটি পুনরাবৃত্তি করুন (y ফাংশনের পক্ষে যুক্তি)

] সঠিক যুক্তি (২ থেকে শুরু হয় এবং তারপরে প্রতিটি পুনরাবৃত্তির ফলাফল ব্যবহার করে)

* ভগ্নাংশের তালিকাটিকে সঠিক যুক্তি দিয়ে গুণিত করুন

(=<.) ফলাফল পূর্ণসংখ্যা (প্রতিটি নম্বর এর মেঝে সঙ্গে তুলনা করুন)

{.@I.@পূর্ণসংখ্যার I.প্রথমটির সূচকটি সন্ধান করে{.

{[ নম্বরটি পুনরুদ্ধার করতে সূচক ব্যবহার করে


1
62 বাইট:('0m26<l~l *,..V'%&(31x-~3&u:)'ztRE@<620,*-! ')&(0{*#~0=1|*)2:
মাইল

@ মাইলস ধন্যবাদ, আমি মনে করি আপনার সমাধান অবশ্যই পোস্ট করা উচিত, এটি আমার চেয়ে ভাল।
গ্যালেন ইভানভ 15

2

05AB1E ,  44  43 বাইট

0-ইন্ডেক্স

2sF•Ë₁ǝßÌ?ƒ¥"h2ÔδD‡béαA5À>,•тв2ä`Š*s‰ʒθ_}нн

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

ব্যাখ্যা

2                                             # initialize stack with 2
 sF                                           # input times do:
   •Ë₁ǝßÌ?ƒ¥"h2ÔδD‡béαA5À>,•                  # push a base-255 compressed large number
                            тв                # convert to a list of base-100 digits
                              2ä`             # split in 2 parts to stack
                                 Š            # move denominators to bottom of stack
                                  *           # multiply the last result by the numerators
                                   s‰         # divmod with denominators
                                     ʒθ_}     # filter, keep only those with mod result 0
                                         нн   # get the div result

প্রচুর ধাক্কা হয় 17781923297795770111131515559185513833292319171311140201



1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 106 95 বাইট

  • 11 বাইট কমিয়ে দেওয়ার জন্য @ আরনল্ড এবং @ নীলকে ধন্যবাদ
(n,N=2,I=13,B=Buffer(`[U3&!\rNM_M\r7`))=>n--?f(n,N/B.find(x=>N%x<!!++I)*B[I]):N

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


কয়েকটা বাইট বের করার ব্যবস্থা করা হয়েছে তবে এই ভেবে সাহায্য করতে পারে না যে আমি কিছু অনুপস্থিত: অনলাইনে চেষ্টা করে দেখুন!
নীল

1
@ নীল স্প্রেড অপারেটর ব্যবহার করার দরকার নেই Buffer। এছাড়াও, আমি মনে করি এটি একটি ডেটা একক বাফারে: 95 বাইটে রাখা নিরাপদ ।
আর্নল্ড

@ আরনাউল্ড ওপি স্প্রেড অপারেটরটি ব্যবহার করেছে (আমি বাফারের সাথে অপরিচিত তাই আমি এর চেয়ে ভাল আর কিছু জানতাম না) তবে এটি একক বাফারের সাথে দুর্দান্ত পদক্ষেপ!
নীল

@ আরনাউল্ড সঠিক, আপডেট হয়েছে :)
ড্যানিয়েলইন্ডি

1

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

K`17/91¶78/85¶19/51¶23/38¶29/33¶77/29¶95/23¶77/19¶1/17¶11/13¶13/11¶15/2¶1/7¶55/1¶17/91¶78/85¶19/51¶23/38¶29/33¶77/29¶95/23¶77/19¶1/17¶11/13¶13/11¶15/2¶1/7¶55/1¶2
\d+
*
"$+"+`((_+)/(_+)¶(.+¶)*)(\3)+$
$1$#5*$2
r`_\G

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

K`17/91¶78/85¶19/51¶23/38¶29/33¶77/29¶95/23¶77/19¶1/17¶11/13¶13/11¶15/2¶1/7¶55/1¶17/91¶78/85¶19/51¶23/38¶29/33¶77/29¶95/23¶77/19¶1/17¶11/13¶13/11¶15/2¶1/7¶55/1¶2

সমস্ত ভগ্নাংশের তালিকা, এবং প্রাথমিক পূর্ণসংখ্যার সাথে ইনপুট প্রতিস্থাপন করুন।

\d+
*

সমস্ত কিছু অ্যানারিতে রূপান্তর করুন।

"$+"+`

আসল ইনপুট দ্বারা প্রদত্ত বারের সংখ্যাটির পুনরাবৃত্তি করুন।

((_+)/(_+)¶(.+¶)*)(\3)+$

একটি ডিনোমিনেটর সন্ধান করুন যা সমানভাবে পূর্ণসংখ্যাকে ভাগ করে দেয়।

$1$#5*$2

সংখ্যার দ্বারা গুণিত বিভাগের ফলাফলের সাথে পূর্ণসংখ্যা প্রতিস্থাপন করুন।

r`_\G

দশমিককে পূর্ণসংখ্যা রূপান্তর করুন এবং ফলাফল আউটপুট করুন।


1

সংযুক্তি , 81 বাইট

Nest<~{Find[Integral,_*&`//=>Chop[Ords!"0zmt2R6E<@l<~6l2 0*,,*.-.!V "-31,2]]},2~>

এটি অনলাইন চেষ্টা করুন! ভগ্নাংশের আউটপুট ১ টির উপরে। উদাহরণস্বরূপ, ইনপুট 5ফেরত দেয় 2275/1N@প্রোগ্রামে প্রিপেন্ড করে এটি প্লাস 2 বাইটের সাথে স্থির করা যেতে পারে ।

ব্যাখ্যা

এটি একটি ত্রিযুক্ত ফাংশন, যা Nest দুটি পূর্বনির্ধারিত তর্ক যুক্ত করে:

{Find[Integral,_*&`//=>Chop[Ords!"0zmt2R6E<@l<~6l2 0*,,*.-.!V "-31,2]]}

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

নীচে PRIMEGLAY এনকোড করতে ব্যবহৃত হয়:

&`//=>Chop[Ords!"0zmt2R6E<@l<~6l2 0*,,*.-.!V "-31,2]]

এটি যেমন মূল্যায়ন করা হয়:

A> "0zmt2R6E<@l<~6l2 0*,,*.-.!V "
"0zmt2R6E<@l<~6l2 0*,,*.-.!V "
A> Ords!"0zmt2R6E<@l<~6l2 0*,,*.-.!V "
[48, 122, 109, 116, 50, 82, 54, 69, 60, 64, 108, 60, 126, 54, 108, 50, 32, 48, 42, 44, 44, 42, 46, 45, 46, 33, 86, 32]
A> Ords!"0zmt2R6E<@l<~6l2 0*,,*.-.!V "-31
[17, 91, 78, 85, 19, 51, 23, 38, 29, 33, 77, 29, 95, 23, 77, 19, 1, 17, 11, 13, 13, 11, 15, 14, 15, 2, 55, 1]
A> Chop[Ords!"0zmt2R6E<@l<~6l2 0*,,*.-.!V "-31,2]
 17 91
 78 85
 19 51
 23 38
 29 33
 77 29
 95 23
 77 19
  1 17
 11 13
 13 11
 15 14
 15  2
 55  1
A> &`//=>Chop[Ords!"0zmt2R6E<@l<~6l2 0*,,*.-.!V "-31,2]
[(17/91), (78/85), (19/51), (23/38), (29/33), (77/29), (95/23), (77/19), (1/17), (11/13), (13/11), (15/14), (15/2), (55/1)]

আসুন Gব্যাখ্যা দিয়ে এই অভিব্যক্তিটি প্রতিস্থাপন করুন । আমাদের প্রথম কাজটি হয়ে যায়:

{Find[Integral,_*G]}

এটি FRACTRAN কোডের একক পুনরাবৃত্তি সম্পাদন করে _, ফাংশনে ইনপুট। এটি অ্যারের Findএকটি Integralসদস্য (যার মধ্যে একটি পূর্ণসংখ্যা) এটি প্রতিটি সদস্যের সাথে গুণিত _*Gইনপুট । কেবলমাত্র এই রূপান্তরটি প্রদত্ত বারের প্রয়োগ করে।_GNest

সংযুক্তি, 42 বাইট

আমি $langsএই চ্যালেঞ্জ থেকে অনুপ্রাণিত হয়ে লাইব্রেরির অংশগুলি প্রয়োগ করেছি , সুতরাং আমি এই বিভাগটি প্রতিদ্বন্দ্বী হিসাবে চিহ্নিত করছি।

Needs[$langs]2&FRACTRAN_EXAMPLES.prime.run

এটি কেবল FRACTRAN_EXAMPLESআমার কাছে থাকা তালিকাকে জিজ্ঞাসা করে । প্রতিটি উদাহরণ একটি FractranExampleউদাহরণ, যা ইনবিল্ট FRACTRANফাংশনটিকে কল করে । primeউদাহরণস্বরূপ Conway এর PRIMEGAME হয়।



0

পিএইচপি, 183 বাইট ("পিএইচপি" ট্যাগ সহ 189)

গল্ফড:

$t=2;for(;@$i++<$argv[1];){foreach([17/91,78/85,19/51,23/38,29/33,77/29,95/23,77/19,1/17,11/13,13/11,15/14,15/2,55/1]as$n){$a=$t*$n;if(preg_match('/^\d+$/',$a)){$t=$a;break;}}}echo$t;

Ungolfed:

<?php 
$t=2;
for(;@$i++<$argv[1];){
    foreach([17/91,78/85,19/51,23/38,29/33,77/29,95/23,77/19,1/17,11/13,13/11,15/14,15/2,55/1] as $n){
        $a=$t*$n;
        if(preg_match('/^\d+$/',$a)){
            $t=$a;break;
        }
    }
}
echo $t;

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

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