এই চ্যালেঞ্জটি পুনরাবৃত্তি (পুলিশগুলির থ্রেড) সম্পর্কে


15

কপসের থ্রেড

এই থ্রেডে, আপনার কাজটি কোনও পূর্ণসংখ্যার সিরিজ উত্পন্ন করতে পুনরাবৃত্তি-ভিত্তিক প্রোগ্রাম / ফাংশন করা। ডাকাতরা চেষ্টা করবে এবং ডাকাতদের থ্রেডে একটি সংক্ষিপ্ত অ-পুনরাবৃত্ত সমাধান সমাধান করবে ।

প্রতিদ্বন্দ্বিতা চ্যালেঞ্জ

অনেক ভাষায়, পুনরাবৃত্তি ফাংশন একটি প্রোগ্রামিং টাস্ককে উল্লেখযোগ্যভাবে সহজ করতে পারে। তবে সঠিক পুনরাবৃত্তির জন্য সিনট্যাক্স ওভারহেড কোড-গল্ফে এর ব্যবহার্যতা সীমাবদ্ধ করতে পারে।

পুলিশ একটি প্রোগ্রাম বা ফাংশন একটি একক পূর্ণসংখ্যা গ্রহণ তৈরি করবে n, যা প্রথম উত্পন্ন করবে nএকটি পূর্ণসংখ্যা সিরিজের এন্ট্রি, শুধুমাত্র পুনরাবৃত্তির ব্যবহার 1 । তাদের এন্ট্রিটি নিরাপদ হিসাবে চিহ্নিত করার জন্য ক্রমটি উত্পন্ন করার জন্য একটি ছোট সংলগ্ন উপায় আছে কিনা তাও তাদের নিশ্চিত করা উচিত।

ডাকাত একটি খুঁজে পেতে চেষ্টা করবে খাটো একই পূর্ণসংখ্যা সিরিজ উৎপাদিত একই ভাষায় প্রোগ্রাম বা ফাংশন,, কোন পুনরাবৃত্তির ব্যবহার 2

যদি দশ দিনের মধ্যে (২৪০ ঘন্টা) পুলিশদের জমা দেওয়ার ব্যবস্থা না ফেলা হয়, তবে পুলিশ তাদের নিজের সমাধান প্রকাশের মাধ্যমে সংক্ষিপ্ততর পুনরাবৃত্তিমূলক পদ্ধতি গ্রহণ করা সম্ভব প্রমাণ করবে। তারপরে তারা তাদের জমাটি নিরাপদ হিসাবে চিহ্নিত করতে পারে ।

পুলিশ চ্যালেঞ্জের বিজয়ী সবচেয়ে সংক্ষিপ্ত হবে ( অনুযায়ী ) পুনরাবৃত্তি-ভিত্তিক জমা নিরাপদ হিসাবে চিহ্নিত।

ডাকাতদের চ্যালেঞ্জের বিজয়ী হবেন সেই ডাকাত যিনি সর্বাধিক সমাধানগুলিকে ক্র্যাক করেছিলেন।

1: এটি কেবল সিনট্যাক্সে পুনরাবৃত্ত হওয়া প্রয়োজন; টেল কল অপ্টিমাইজেশনের জন্য আপনাকে উদ্বিগ্ন হওয়ার দরকার নেই।

2: আবার, সিনট্যাক্সে অ-পুনরাবৃত্ত; সুতরাং আপনি কোনও পুনরাবৃত্ত সমাধান সমাধান করতে পারবেন না এবং লেল কল অপ্টিমাইজেশনের জন্য লুপের জন্য এটি সংকলিত দাবি করতে পারবেন না।

জমা দেওয়ার প্রয়োজনীয়তা

প্রতিটি জমা দেওয়ার ক্ষেত্রে একটি একক পূর্ণসংখ্যা n(শূন্য- বা এক-ভিত্তিক) লাগবে । জমা দেওয়ার পরে nপছন্দসই একটি পূর্ণসংখ্যার সিরিজের প্রথম এন্ট্রি আউটপুট দেয় বা ফিরে আসবে । (দ্রষ্টব্য যে এই পূর্ণসংখ্যার সিরিজটি অবশ্যই নির্ভর করে না n)। ইনপুট এবং আউটপুট পদ্ধতি পুনরাবৃত্ত এবং অ-পুনরাবৃত্ত পদ্ধতির মধ্যে পৃথক হতে পারে। পূর্ণসংখ্যা সিরিজটি হ'ল কমপক্ষে ৫ এর দৈর্ঘ্য সহ কোনও নির্বিচার সিরিজ হতে পারে সিরিজটি সঠিকভাবে ব্যাখ্যা করা উচিত।

আপনার জমা দেওয়ার ক্ষেত্রে স্বেচ্ছাচারিতার জন্য বড় nকাজ করা উচিত নয়, তবে কমপক্ষে কাজ করা উচিত n=5। অ-পুনরাবৃত্তির পদ্ধতির অবশ্যই কমপক্ষে nপুনরাবৃত্ত পদ্ধতির মতো কাজ করতে সক্ষম হতে হবে বা n=2^15-1যেটি ছোট।

recursion

এই চ্যালেঞ্জের স্বার্থে, পুনরাবৃত্তিটি একটি ফাংশন (বা ফাংশন-মতো কনস্ট্রাক্ট) ব্যবহার করে কাঙ্ক্ষিত ক্রম তৈরি করে সংজ্ঞায়িত করা হয় যা নিজেকে কল করে (বা ফাংশনগুলির ক্রমকে কল করে যা নিজেকে কল করে শেষ করে; এতে ওয়াই সংযুক্তকারীটির মতো কনস্ট্রাক্ট অন্তর্ভুক্ত থাকে)। পুনরাবৃত্তির গভীরতা অনন্তের nদিকে যেতে হবে । পুনরাবৃত্তিযোগ্য পদ্ধতির এমন কিছু যা পুনরাবৃত্তিযোগ্য নয়


থাইমের জন্য যেখানে forপিছনে পুনরাবৃত্তির দ্বারা সম্পন্ন হয়, তা forপুনরাবৃত্তি বা লুপ হয়?
l4m2

আমি কি বলতে পারি যে কোনও কোড nতাত্ত্বিকভাবে সঠিক হলে তা নির্বিচারে বৃহত্তর জন্য কাজ করে , তবে সময় বা স্মৃতির সীমাবদ্ধতার কারণে এটি চালানো যায় না?
বুবলার

@ বুবলার অবশ্যই, তবে কমপক্ষে n=5গণনা করতে হবে
সানচাইসেস

@ l4m2 সমস্ত ভাষা প্রতিযোগিতা করতে পারে না। দেখে মনে হচ্ছে এই ভাষাটির পুনরাবৃত্তি না ব্যবহারের স্থানীয় উপায় নেই (যদি না xforকোনও ধরণের আমদানির মাধ্যমে পাওয়া যায়?) সম্ভবত এই ভাষাটি প্রতিযোগিতা করতে পারে না।
সানচিইস

একটি পুনরাবৃত্ত যে খুব বড় হয় না যখন বড় বড় হয়, এটি কি পুনরাবৃত্তি?
l4m2

উত্তর:


4

পাইথন 3 , 65 বাইট (নিরাপদ)

f=lambda n,a=3,b=0,c=6,d=6:n*[1]and[a+b]+f(n-1,c,d,2*c+d,2*a+3*b)

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

পাইথনের আরও একটি চেষ্টা।

ক্রমটি হ'ল "2 বাই বাই এন বোর্ডকে তিন রঙে ডোমিনো দিয়ে পূরণ করার উপায়গুলি, যাতে কোনও দুটি রঙের ডোমিনোস একে অপরকে স্পর্শ না করে"। OEIS এ নেই on


বলা যাক n=6। বোর্ডটি দেখে মনে হচ্ছে:

######
######

এবং এগুলি তিনটি রঙে বৈধ ডোমিনো টিলিংস ( 1-3প্রতিটি রঙের প্রতিনিধিত্ব করে):

123123 122331 212332 212121 113311
123123 133221 212112 212121 331133

তবে এগুলি নয় (দুটি একই রঙের ডোমিনোস একে অপরকে স্পর্শ করছে):

112323 332333 211113
112323 112311 233223

ক্রমটি প্রতিটি সম্ভাব্য ডোমিনো টিলিংস গণনা করে যা প্রতিটির জন্য নিয়ম পূরণ করে n


উদ্দিষ্ট সমাধান, 58 বাইট

n=int(input());a=3;b=12
for _ in[0]*n:print(a);a,b=b,a*4+b

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

দুর্ভাগ্যবশত এটিকে দেখে মনে হচ্ছে যে কেউ পুনরাবৃত্তির সম্পর্কটিকে সহজ করার জন্য বিরক্ত করেনি, যা স্পষ্টভাবে পুনরাবৃত্তির কোডে প্রদর্শিত হয়েছিল। প্রদত্ত দ্বিগুণ পুনরাবৃত্তি যেমন-তে হয় তেমন কোনও প্রোগ্রাম তৈরি করা কার্যকর হয় না কারণ এটি পাইথন 3।


1
অনুগ্রহ করে অনুগ্রহ করে আরও বিশদ জানাতে পারেন?
tsh

@tsh কিছু ব্যাখ্যা যুক্ত করেছেন। এটি আরও ভাল দেখাচ্ছে?
বুবলার

2

অক্টেভ 47 বাইট, l4m2 দ্বারা কর্কশ

@(n)(f=@(r,m){@()[r(r,m-1),m],[]}{~m+1}())(f,n)

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

উদাহরণস্বরূপ, এখানে একটি অক্টাভ এন্ট্রি রয়েছে যা প্রথম nধনাত্মক পূর্ণসংখ্যা, https://oeis.org/A000027 উত্পন্ন করে ।


ফেটে গেছে । একটি পুনরাবৃত্তি বেনামে ফাংশন তৈরি করার জন্য +1 যদিও ... প্রায়শই সেগুলি ব্যবহৃত হয় না :)
স্টিভি গ্রিফিন

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

@ স্টেভি গ্রিফিন নিশ্চিত নই যে আড্ডার পিংগুলি কাজ করেছিল কিনা, তবে l4m2আপনাকে এটি মারবে।
সান্চাইজস

2

পাইথন 3 , 75 বাইট, xnor দ্বারা ক্র্যাক

f=lambda n,a=[1]:a*n and[a[0]]+f(n-1,sorted({*a[1:],a[0]*2,a[0]*3,a[0]*5}))

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

বিখ্যাত হামিং নম্বরগুলি, ওরফে 5-স্মুথ সংখ্যা ( A051037 )।

ক্র্যাকড সলিউশন, 51 বাইট

lambda n:[k for k in range(1,2**n)if 60**k%k<1][:n]

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

উদ্দিষ্ট সমাধান, 74 বাইট

lambda n:sorted(2**(i%n)*3**(i//n%n)*5**(i//n**2)for i in range(n**3))[:n]

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



2

1
আপনি পৃথক পৃথক পূর্ণসংখ্যার সিরিজের অনুমতি দেওয়া হয়েছে [1,2,...,n], আপনি কি ঠিক তা জানেন?
সানাইচাইস


আমি সে সম্পর্কে ভেবেছিলাম কারণ ক্র্যাকটি কেবল গুগল অনুসন্ধানের বাইরে গণনা করা লুপগুলি ব্যবহার করে using তবে প্রকৃতপক্ষে ফাংশনের ভিতরে যা কিছু আছে তা সহজেই লুপের ভিতরে পুনরায় তৈরি করা যায়।
jmarkmurphy

2

Röda , 40 বাইট

f x,a=1,b=2{[a];f x-1,a=b,b=a+b if[x>1]}

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

এই ফাংশনটি নিম্নলিখিত সীমাবদ্ধ ক্রম দেয় (90 টি প্রথম ফিবোনাকির সংখ্যা):

1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155
165580141
267914296
433494437
701408733
1134903170
1836311903
2971215073
4807526976
7778742049
12586269025
20365011074
32951280099
53316291173
86267571272
139583862445
225851433717
365435296162
591286729879
956722026041
1548008755920
2504730781961
4052739537881
6557470319842
10610209857723
17167680177565
27777890035288
44945570212853
72723460248141
117669030460994
190392490709135
308061521170129
498454011879264
806515533049393
1304969544928657
2111485077978050
3416454622906707
5527939700884757
8944394323791464
14472334024676221
23416728348467685
37889062373143906
61305790721611591
99194853094755497
160500643816367088
259695496911122585
420196140727489673
679891637638612258
1100087778366101931
1779979416004714189
2880067194370816120
4660046610375530309

আমি জানি এটি আরও বেশি ফিবোনাচি সংখ্যা উত্পন্ন করতে পারে তবে এই চ্যালেঞ্জের উদ্দেশ্যে এই সংখ্যাগুলি তৈরি করা যথেষ্ট is


1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 91 বাইট, l4m2 দ্বারা ক্র্যাক

f=x=>[w=~-x&&(g=(n,y=2)=>~-n&&(n<y?1:n%y?g(n,y+1):1+g(n/y,y)))(x)+f(x-1),console.log(w)][0]

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

OEIS ক্রম A022559 (i = 1 থেকে শুরু) এর প্রথম n পদগুলি মুদ্রণ করে ।

l4m2 74 by২ বাইটে লুপের জন্য 3 ফিট করে এবং আমার পুলিশ পোস্টটি ক্র্যাক করেছে:

n=>{for(i=s=0;j=i++<n;console.log(s))for(x=i;j++<i;)for(;x%j<1;x/=j)s++}

তবে, আমার উদ্দেশ্যযুক্ত উত্তরে লুপগুলির পক্ষে আসলে কেবল 2 টি রয়েছে:

n=>{for(i=c=0;i++<n;console.log(c))for(p=2,z=i;p<=z;z%p?p++:(z/=p,c++));}

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



@ l4m2 আসলে আমার কাছে একটি 73-বাইট রয়েছে;) যাইহোক
সংযোগগুলি

গল্ফিং লোকটির দিকে যান এটি এখন @২ @ ব্যবহারকারী 71546
l4m2

1

x86 .COM ফাংশন, 12 বাইট, নিডজেজকোব দ্বারা ক্র্যাক

0000 52                     push dx
0001 4A                     dec dx
0002 7403                   je 0007
0004 E8F9FF                 call 0000
0007 58                     pop ax
0008 F7E0                   mul ax
000A AB                     stosw


000B C3                     ret

ইনপুট ডিএক্স, আউটপুট [ডিআই] ~ [ডিআই + ২ * ডিএক্স -১]

ক্র্যাকারের সমাধান:

0: 31 C0    xor ax, ax
2: BF 01 00 mov di, 1
5: 01 F8    add ax, di
7: AB       stosw
8: E2 FB    loop 5
A: C3       ret

উদ্দিষ্ট সমাধান:

  xor bx,bx
c:inc bx
  mov ax,bx
  mul ax
  stosw
  loop c
  ret


আমি আউটপুট পদ্ধতি পরিবর্তন করেছি। আপনি দেখতে পারেন?
নিডজেজেকোব

1

পাইথন 3 , 62 বাইট, কর্কশ mwchase দ্বারা

def f(x):
 if(x<1):return[1]
 return f(x-1)+[sum(f(x-1)[-2:])]

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

আমার মনে হচ্ছে এটি খুব সহজ হতে চলেছে ...

ক্রম ফিবানচি ক্রম f(n) = f(n-1) + f(n-2)সঙ্গেf(0) = f(1) = 1


আপনি বুলিয়ান অপারেটরগুলির দ্বারা তৈরি একটি ইনলাইন ত্রিবারি বিবৃতিতে স্যুইচ করতে পারেন, যা এটি একটি বিবৃতিতে রাখে, যা সরাসরি কোলনের পরে যেতে পারে। কমপক্ষে আটটি বাইট সাশ্রয় করে।
mwchase

ল্যাম্বদাতে স্যুইচ করা দুটি (EDIT: চার) আরও সাশ্রয় করে।
mwchase

2
আমি আপনার পরামর্শগুলির প্রশংসা করি এবং ভবিষ্যতের পাইথন কোড গল্ফ সাবমিশনের জন্য তাদের মনে রাখব @ এমডব্যাক্স, বেশ কয়েকটি কারণে আমি কোনও পুলিশ এবং ডাকাতদের জমা দিতে গল্ফ করব না। প্রথমে যদি আমি এটি গল্ফ চালিয়ে যেতে থাকে তবে এটি ডাকাতটির জন্য একটি চলন্ত লক্ষ্য নির্ধারণ করে, যা এই ধরণের পোস্টে পছন্দসই নয়। দ্বিতীয় গল্ফিং এর অর্থ
হ'ল


1

গোল> <> , 15 বাইট, কর্কশ mbomb007 দ্বারা

I1AZZ;
M:K:?ZNB

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

সিরিজটি 0,1,2,3,4,5কিন্তু প্রতিটি উপাদান তার পরে অনেক 0 গুলি অনুসরণ করে।

উদাহরণস্বরূপ, প্রথম কয়েকটি মানগুলি হ'ল:

 1: 0  First element, followed by 0 zeroes
 2: 1  Followed by 1 zero
 3: 0
 4: 2  Followed by 2 zeroes
 5: 0
 6: 0
 7: 3  Followed by 3 zeroes
 8: 0
 9: 0
10: 0
    etc.


0

জাভাস্ক্রিপ্ট, 63 বাইট, ক্র্যাকড

f=x=>(x?[f(x-1)[0]&&1?3*f(x-1)[0]+1:f(x-1)[0]/2,...f(x-1)]:[7])

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

বিপরীত অ্যারেতে প্রথম এন উপাদানগুলি দেয়



বিপরীত অ্যারে প্রত্যাবর্তন বর্তমানে অনুমোদিত নয় বলে মনে হচ্ছে
l4m2

0

উইন্ডোজ .BAT, 80 বাইট

@set /a n=%1-1
@echo 8%3
@if 0 neq %n% @call %0 %n% 2%3 6%2%3

ব্যবহার:

CD <PATH>
<FILENAME> <N_1>
<FILENAME> <N_2>
<FILENAME> <N_3>

লুপ সংস্করণটি বর্তমান অভিধানে অনুমান করতে পারে তবে আরম্ভ বা পুনরায় সেট করতে হবে


0

পাইথন, 82 বাইট; কর্কশ

এটি 82 বাইটে OEIS সিকোয়েন্সেন A004001 এর পুনরাবৃত্ত পাইথন বাস্তবায়ন । এই সিরিজের আরও পটভূমি ওল্ফ্রামের ম্যাথওয়ার্ল্ডে পাওয়া যাবে ।

def A(n):
 if n in[1,2]:return[1]*n
 S=A(n-1);return S+[S[S[n-2]-1]+S[n-S[n-2]-1]]

এই ক্রমের প্রথম 30 নম্বরগুলি হ'ল:

1, 1, 2, 2, 3, 4, 4, 4, 5, 6, 7, 7, 8, 8, 8, 8, 9, 10, 11, 12, 12, 13, 14, 14, 15, 15, 15, 16, 16, 16

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