চেকমেট (ওরফ ইউরিনাল সমস্যা)


35

আমার Precalc শিক্ষক তার প্রিয় সমস্যার যে, তিনি গঠিত (বা আরো সম্ভবত অন্যতম চুরি করে দ্বারা অনুপ্রাণিত xkcd যে একটি সারিতে জড়িত থাকে) nurinals। "চেকমেট" এমন একটি পরিস্থিতি যেখানে প্রতিটি মূত্র ইতিমধ্যে দখল করা থাকে বা তাদের পাশেই একটি দখলযুক্ত ইউরিনাল থাকে। উদাহরণস্বরূপ, যদি কোনও ব্যক্তি একটি হয় Xতবে

X-X--X

চেকমেট হিসাবে বিবেচিত হয়। মনে রাখবেন যে ইতিমধ্যে অধিগ্রহণ করা মূত্রের পাশে কোনও ব্যক্তি ইউরিনাল দখল করতে পারবেন না।

কার্য

আপনার প্রোগ্রামটি stdinকমান্ড লাইন আরগস বা কোনও ফাংশন আর্গুমেন্টের মাধ্যমে একটি সংখ্যা নেবে । আপনার প্রোগ্রামটি তখন মুদ্রণ করবে বা প্রস্রাবের ইনপুটযুক্ত সংখ্যার সাথে চেকমেট যেভাবে আসতে পারে তার সংখ্যাটি ফিরিয়ে দেবে।

উদাহরণ

0 -> 1(বাজিমাত যেমন নাল ক্ষেত্রে গনণা করা হয়)
1 -> 1( X)
2 -> 2( X-বা -X)
3 -> 2( X-Xবা -X-)
4 -> 3( X-X-, -X-X, অথবা X--X)
5 -> 4( X-X-X, X--X-, -X-X-, অথবা -X--X)
6 -> 5( X-X-X-, X--X-X, X-X--X, -X--X-বা -X-X-X)
7 -> 7( X-X-X-X, X--X-X-, -X-X--X, -X--X-X, X-X--X-, X--X--Xবা -X-X-X-)
8 -> 9( -X--X--X, -X--X-X-, -X-X--X-, -X-X-X-X, X--X--X-, X--X-X-X, X-X--X-X, X-X-X--X, X-X-X-X-)
...

স্কোরিং

বাইটের মধ্যে ক্ষুদ্রতম প্রোগ্রামটি জিতল।




12
এন = 0 কেসটি 1 হওয়া উচিত There ঠিক আছে একটি সেটআপ যা চেকমেট, এবং এটি ''। এটি ফ্যাকটোরিয়াল এবং ক্রমানুসারে একই, 0! = 1, কারণ 0 টি আইটেম সাজানোর ঠিক 1 উপায় রয়েছে।
orlp


19
কোনও টয়লেট মোটেই নিখুঁত পরিস্থিতি নয়। : ডি
টাইটাস

উত্তর:


20

ওসিস , 5 বাইট

কোড

cd+2V

বর্ধিত সংস্করণ

cd+211

ব্যাখ্যা

1 = a(0)
1 = a(1)
2 = a(2)

a(n) = cd+
       c      # Calculate a(n - 2)
        d     # Calculate a(n - 3)
         +    # Add them up

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


7
এটি একটি আশ্চর্যজনক উত্তর, ভাষাটি প্রায় এক মাস আগে তৈরি হয়েছিল

2
@ টসকিওমি এটির একটি ডক আছে,info.txt
সেকেন্ডে টাকসক্রাফটিং

6
@ টেক্সক্রাফুটগ নিশ্চিত করুন, আপনি প্রযুক্তিগত হতে চাইলে। আমি একটি ঘোড়া আঁকতে এবং এটি আমার প্রোগ্রামিং প্রকল্পের দিকে ডকুমেন্টেশন বলতে পারি। এটি কার্যকর বা সিদ্ধান্ত গ্রহণযোগ্য করে তোলে না।

1
@ টসকিওমি info.txtদরকারী, এতে প্রতিটি ওয়েসিস কমান্ডের জন্য একটি ডকুমেন্টেশন রয়েছে
টুকসক্র্যাটিং

8
@ টসকিমি এটি বিলম্ব এবং অলসতার ফল। আজ প্রকৃত ভাষা কীভাবে কাজ করে সে সম্পর্কে আমি একটি সংক্ষিপ্ত দলিল যুক্ত করার চেষ্টা করব।
আদনান

12

জাভা 7, 65 42 বাইট

int g(int u){return u>1?g(u-2)+g(u-3):1;}

ক্রমটি নতুন পেতে কেবল পূর্ববর্তী উপাদানগুলি যুক্ত করে। এই সংক্ষিপ্ত পদ্ধতির জন্য অর্প এবং রডের টুপি;)

পুরানো:

int f(int u){return u<6?new int[]{1,1,2,2,3,4}[u]:f(u-1)+f(u-5);}

পঞ্চম এলিমেন্টের পরে, ক্রমটির ফাঁক পাঁচটি আগের উপাদানটির সাথে বেড়েছে।


তোমার দর্শন লগ করা = তাহলে 3 তারপর আপনার ফাংশনটি 1 কিন্তু উদাহরণগুলো দেখায় যে, এটা করা উচিত 2.
অকর্মা

ওহো! আমি আমার fফাংশনটি পুনরাবৃত্তি করার পরিবর্তে অন্য স্নিপেট থেকে ব্যবহার করছিলাম। আমাকে বোকা, ফিক্সিং ...
Geobits

1
শেষ অংশ ( u>0?u:1;) হতে পারে না 1;?
কনর ও'ব্রায়েন

2
@ জর্দান যদি শূন্য ইউরিনাল থাকে তবে একটি কনফিগারেশনে "প্রতিটি মূত্র ইতিমধ্যে দখল করা আছে"। আমি বিশ্বাস করি যে প্রশ্নে প্রদর্শিত টেস্ট কেসটি ভুল is
Geobits

1
আপনি প্রতিস্থাপন করতে পারেন u>0?u:1;)দ্বারা 1;যদি আপনি প্রথম তুলনা পরিবর্তন u>1, তারপর তোমার দর্শন লগ করা = 2 আউটপুট ছ (0) + + জি (-1), যা হতে হবে 2 হতে হবে
ডান্ডা

9

পাইথন 2, 42 40 39 35 বাইট

f=lambda n:n>1and f(n-2)+f(n-3)or 1

আসল সেটগুলি তৈরি করা হচ্ছে:

lambda n:["{:0{}b}".format(i,n).replace("0","-").replace("1","X")for i in range(2**n)if"11"not in"{:0{}b}".format(i*2,2+n).replace("000","11")]

8

রুবি, 58 34 বাইট

জিওবিটসের মূল জাভা উত্তরের দ্বারা ভারীভাবে অনুপ্রাণিত।

f=->n{n<3?n:n<6?n-1:f[n-1]+f[n-5]}

এটি repl.it এ দেখুন: https://repl.it/Dedh/1

প্রথম প্রচেষ্টা

->n{(1...2**n).count{|i|!("%0#{n}b"%i)[/11|^00|000|00$/]}}

এটি repl.it এ দেখুন: https://repl.it/Dedh


6

পাইথন, 33 বাইট

f=lambda n:+(n<2)or f(n-2)+f(n-3)

স্থানান্তরিত বেস কেসগুলি ব্যবহার করে f(-1) = f(0) = f(1) = 1। যদি True1 এর জন্য ব্যবহার করা যায় তবে আমাদের জন্য 3 বাইটের প্রয়োজন হবে না +()


6

জে, 31 27 23 বাইট

মাইল থেকে 4 টি বাইট সংরক্ষণ করা হয়েছে!

0{]_&(]}.,+/@}:)1 1 2"_

একটি ব্যাখ্যা শীঘ্রই আসতে হবে।

পুরানো সমাধান

(>.1&^)`(-&3+&$:-&2)@.(2&<)

এটি একটি এজেন্ডা। এলএইচএস দুটি ক্রিয়া সমন্বয়ে গঠিত: >.1&^এবং -&3+&$:-&2। শর্তটি ( 2&<) ব্যর্থ হলে প্রথমটি ব্যবহৃত হয়। তার মানে দাঁড়ের উপরে কাঁটাচামচ >.1&^সক্রিয় করা হয়েছে। পালন:

   1 ^ 0 1 2
1 1 1
   (1&^) 0 1 2
1 1 1
   0 1 2 >. (1&^) 0 1 2
1 1 2
   (>.1&^) 0 1 2
1 1 2

এখানে, >.দুটি মান সর্বাধিক লাগে। সুতরাং, এটি প্রাথমিক পদ হিসাবে 1, 1 এবং 2 ফলন করে।

জেরুন্ডের দ্বিতীয় ক্রিয়াটি একটি কাঁটাচামচ:

-&3 +&$: -&2

বাম এবং ডান টাইনগুলি ক্রিয়াপদে প্রয়োগ করা হয়, যথাক্রমে 3 এবং 2 বিয়োগ করে; তারপরে মাঝের ক্রিয়াটি তার সমান বাম এবং ডান যুক্তি যুক্ত হয় called $:প্রতিটি যুক্তিতে ক্রিয়াটি কল করে এবং +এই দুটি যুক্ত করে। এটি মূলত সমান($: arg - 3) + ($: arg - 2)

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

   f =: (>.1&^)`(-&3+&$:-&2)@.(2&<)
   f 0
1
   f 2
2
   f 4
3
   f 6
5
   f 8
9
   F =: f"0         NB. for tables
   F i.13
1 1 2 2 3 4 5 7 9 12 16 21 28
   i.13
0 1 2 3 4 5 6 7 8 9 10 11 12
   (,. F) i.13
 0  1
 1  1
 2  2
 3  2
 4  3
 5  4
 6  5
 7  7
 8  9
 9 12
10 16
11 21
12 28

4

এমএটিএল , 25 23 বাইট

W:qB7BZ+t!XAw3BZ+!3>a>s

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস পরীক্ষা করে দেখুন

ব্যাখ্যা

দুটি কনভলিউশন! হ্যাঁ!

এটি একটি অ্যারে তৈরি করে, এ বলুন, যেখানে প্রতিটি সম্ভাব্য কনফিগারেশন একটি সারি। 1এই অ্যারে একটি দখল অবস্থান প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, ইনপুট 4জন্য অ্যারে হয়

0 0 0 0
0 0 0 1
0 0 1 0
···
1 1 1 0
1 1 1 1

কোডটি তারপরে অ্যারের সাথে কনলভ করে [1 1 1]। এটি একটি অ্যারে বি দখল করে এবং দখল করা পজিশনের প্রতিবেশীদের একটি অ্যারে বি দেয় একটি ননজারো ফলাফল দেয়:

0 0 0 0
0 0 1 1
0 1 1 1
···
2 3 2 1
2 3 3 2

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

আমাদের দ্বিতীয় শর্ত দরকার। উদাহরণস্বরূপ, শেষ সারিটি উপরের শর্তটি পূরণ করে, তবে এটির অংশ নয় কারণ কনফিগারেশনটি শুরু করার জন্য বৈধ ছিল না। একটি বৈধ কনফিগারেশনের দুটি প্রতিবেশী দখলকৃত অবস্থান থাকতে পারে না, অর্থাৎ 1এ এর সাথে দুটি স্বতন্ত্র অবস্থান থাকতে পারে না , সমানভাবে, এর বি ছাড়িয়ে দুটি স্বতন্ত্র মান থাকতে পারে না 1। সুতরাং আমরা বি এর সাথে সংশ্লেষ করে [1 1]এবং ফলাফল অ্যারে, সি,

0 0 0 0
0 1 2 1
1 2 2 1
···
5 5 3 1
5 6 5 2

এই সারির কোনও মান অতিক্রম করে না 3। চূড়ান্ত ফলাফলটি দুটি শর্ত পূরণ করে এমন কনফিগারেশনের সংখ্যা।

W:q    % Range [0 1 ... n-1], where n is implicit input
B      % Convert to binary. Each number produces a row. This is array A
7B     % Push array [1 1 1] 
Z+     % 2D convolution, keeping size. Entries that are 1 or are horizontal 
       % neighbours of 1 produce a positive value. This is array B
t!     % Duplicate and transpose (rows become columns)
XA     % True for columns that contain no zeros
w      % Swap. Brings array B to top
3B     % Push array [1 1]
Z+     % 2D convolution, keeping size. Two horizontally contiguous entries
       % that exceed 1 will give a result exeeding 3. This is array C
!      % Transpose
3>     % Detect entries that exceed 3
a      % True for columns that contain at least one value that exceeds 3
>      % Element-wise greater-than comparison (logical and of first
       % condition and negated second condition)
s      % Sum (number of true values)

4

পিএইচপি, 105 113 93 বাইট

+3 এর জন্য n=1; +9 এর জন্য $argv-1-3 গল্ফড
-20: লক্ষ্য করেছেন যে আমার সংমিশ্রণগুলি করতে হবে না, তবে কেবল তাদের গণনা

for($i=1<<$n=$argv[1];$i--;)$r+=!preg_match("#11|(0|^)0[0,]#",sprintf("%0{$n}b,",$i));echo$r;

সাথে চালানো -r

2 ** এন -1 থেকে 0 পর্যন্ত লুপ:

  • জন্য বাইনারি এন অঙ্ক উপস্থাপনা পরীক্ষা 11, 000, 00শুরুতে বা শেষে, অথবা একটি একক সময়ে0
  • কোনও মিল না থাকলে ফলাফল বাড়ান

মুদ্রণ ফলাফল

একই আকার, কিছুটা সহজ সরল রেগেক্স

for($i=1<<$n=$argv[1];--$i;)$r+=!preg_match("#11|^00|00[,0]#",sprintf("%0{$n}b,",$i));echo$r;
  • লুপ 2 ** এন -1 থেকে 1 (0 এর পরিবর্তে)
  • জন্য বাইনারি উপস্থাপনা পরীক্ষা 11, 00শুরুতে বা শেষে, অথবা000
  • n = 0 এর জন্য কিছুই মুদ্রণ করে না

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

আর্নৌল্ডসের উত্তর পোর্ট করে গল্ফ করেছে:

for($i=$k=1<<$n=$argv[1];--$i;)$r+=!($i&$x=$i/2|$i*2)&&(($i|$x)&~$k)==$k-1;echo$r;

n = 0 এর জন্য কিছুই মুদ্রণ করে না


নতুনটির জন্য 3 বাইট যুক্ত করুন n=0: ?:1ফাইনালের আগে ;
টাইটাস

4

জেলি , 11 বাইট

,’fR_2߀So1

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

,’fR_2߀So1  Main link. Argument: n

 ’           Decrement; yield n - 1.
,            Pair; yield [n, n - 1].
   R         Range; yield [1, ..., n].
  f          Filter; keep the elements that are common to both lists.
             This yields [n, n - 1] if n > 1, [1] if n = 1, and [] if n < 1.
    _2       Subtract 2 from both elements, yielding [n - 2, n - 3], [-1], or [].
      ߀     Recursively call the main link for each integer in the list.
        S    Take the sum of the resulting return values.
         o1  Logical OR with 1; correct the result if n < 1.

2
কিভাবে কাজ করে? এটি পুনরাবৃত্ত সূত্র, বা অন্য কিছু ব্যবহার করে?
কনর ও'ব্রায়েন

@ কনরও ব্রায়েন হ্যাঁ, এটি পুনরাবৃত্ত সূত্রটি ব্যবহার করে। আমি একটি ব্যাখ্যা যুক্ত করেছি।
ডেনিস

4

জাভাস্ক্রিপ্ট (ES6) / পুনরাবৃত্ত, 30 27 বাইট

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

let

f=n=>n<3?n||1:f(n-2)+f(n-3)

for(var n = 1; n < 16; n++) {
  console.log(n, f(n));
}

জাভাস্ক্রিপ্ট (ES6) / নন-রিকার্সিভ 90 77 বাইট

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

let f =

n=>[...Array(k=1<<n)].map((_,i)=>r+=!(i&(x=i>>1|i+i))&&((i|x)&~k)==k-1,r=0)|r

for(var n = 1; n < 16; n++) {
  console.log(n, f(n));
}


1
আমি মনে করি , বা এমনকি ((i|r|l)&(k-1))হয়ে উঠতে ((i|r|l)&k-1)পারে((i|r|l)&~-k)
Conor O'Brien

এক বাইট: i<<1-> i*2বাi+i
টাইটাস

1
আপনি 6 বাইট সংরক্ষণ ঠ এবং দ জন্য এক পরিবর্তনশীল ব্যবহার করতে পারেন: !(i&(x=i>>1|i+i))&&((i|x)&(k-1))==k-1; এবং আপনি সন্নিবেশ করতে পারেন ,k--কোথাও, আপনি প্রতিস্থাপন করতে পারেন k-1সঙ্গে kডান বন্ধনী সংরক্ষণ করুন।
তিতাস

&(k-1)যাইহোক যাইহোক কোন প্যারেন্স প্রয়োজন; তবে আপনি &~kপরিবর্তে ব্যবহার করতে পারেন ।
টাইটাস

1
আমি এটিকে এখানে রেখে যাচ্ছি:f=n=>n<3?n||1:f(n-2)+f(n-3)
শান এইচ

3

গণিত, 35 বাইট

a@0=a@1=1;a@2=2;a@b_:=a[b-2]+a[b-3]

একটি ফাংশন সংজ্ঞা দেয় a। একটি পূর্ণসংখ্যা ইনপুট হিসাবে নেয় এবং একটি পূর্ণসংখ্যা আউটপুট হিসাবে প্রদান করে। সহজ পুনরাবৃত্তি সমাধান।


3

AnyDice , 51 বাইট

function:A{ifA<3{result:(A+2)/2}result:[A-2]+[A-3]}

এখানে আরও আরও AnyDice উত্তর থাকা উচিত।

আমার সমাধান গণনা করে এমন একটি পুনরাবৃত্ত ফাংশন সংজ্ঞায়িত করে a(n)=a(n-2)+a(n-3)। এটি ফিরে আসে a(0)=a(1)=1এবং a(2)=2কিছু পূর্ণসংখ্যা বিভাগ যাদু ব্যবহার করে।

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

দ্রষ্টব্য: আউটপুটটি অদ্ভুত দেখাচ্ছে এবং এটি সাধারণত ডাইস সম্ভাব্যতার আউটপুট ব্যবহার করার জন্য ব্যবহৃত হয়। বার চার্টের বাম দিকে কেবল সংখ্যাটি দেখুন।


3

পার্ল, 35 34 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

STDIN এ ইনপুট দিন

checkmate.pl <<< 8

checkmate.pl:

#!/usr/bin/perl -p
$\+=$b-=$.-=$\-$b*4for(++$\)x$_}{

একটি নতুন বিকশিত গোপন সূত্র। সমান্তরাল কার্যভারের প্রয়োজন ছাড়াই রিপল আপডেট 3 স্টেট ভেরিয়েবল।

মূল সমস্যাটি সমাধান করার জন্য এটি সমান সংক্ষিপ্ত (তবে অনেক ধীর এবং অনেক বেশি স্মৃতি গ্রহণ):

#!/usr/bin/perl -p
$_=grep!/XX|\B-\B/,glob"{X,-}"x$_

কিন্তু এটি কাজ করে না 0


2

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

n=>[1,...Array(n)].reduce(($,_,i,a)=>a[i]=i<3?i:a[i-3]+a[i-2])

এই প্রথম আমি দুটি ডামি ভেরিয়েবলের নাম চাইছি। একটি পুনরাবৃত্ত সংস্করণ সম্ভবত সংক্ষিপ্ত হবে, তবে আমি সত্যিই পছন্দ করি reduce... সম্পাদনা: একটি সমাধান পেয়েছে, এছাড়াও 62 বাইট, যা কেবলমাত্র একটি ডামি ভেরিয়েবল রয়েছে:

n=>[1,...Array(n)].reduce((p,_,i,a)=>a[i]=i<5?i+2>>1:a[i-5]+p)

2

জেলি , 19 বাইট

Recursive সমাধান হয় সম্ভবত খাটো ...

Ḥ⁹_c@⁸
+3µ:2R0;瀵S

এ দেখুন TryItOnline
বা সিরিজ n = [0, 99]এ, এছাড়াও TryItOnline

কিভাবে?

n+3সংমিশ্রণগুলি গণনা করে তম পাদোভানের সংখ্যা প্রদান করে

Ḥ⁹_c@⁸ - Link 1, binomial(k, n-2k): k, n
Ḥ      - double(2k)
 ⁹     - right argument (n)
  _    - subtract (n-2k)
     ⁸ - left argument (k)
   c@  - binomial with reversed operands (binomial(k, n-2k))

+3µ:2R0;瀵S - Main link: n
  µ       µ  - monadic chain separation
+3           - add 3 (n+3)
   :2        - integer divide by 2 ((n+3)//2)
     R       - range ([1,2,...,(n+3)//2]
      0;     - 0 concatenated with ([0,1,2,...,(n+3)//2]) - our ks
        ç€   - call previous link as a dyad for each
           S - sum

2

> <> , 25 + 2 = 27 বাইট

211rv
v!?:<r@+@:$r-1
>rn;

প্রোগ্রাম শুরু হওয়ার সময় স্ট্যাকটিতে উপস্থিত হওয়ার জন্য ইনপুটটির প্রয়োজন, তাই -vপতাকাটির জন্য +2 বাইট । এটি অনলাইন চেষ্টা করুন!

প্রথম লাইনটি স্ট্যাকটিকে আরম্ভ করে 1 1 2 n, nইনপুট নম্বরটি কোথায় । দ্বিতীয় লাইন, দৌড়ানো পিছন, চেক যে n1. চেয়ে বড় হয়, তাহলে তা না হয়, ndecremented হয় এবং ক্রমানুসারে পরবর্তী উপাদান উৎপন্ন হয় নিম্নরূপ:

r$:@+@r              a(n-3) a(n-2) a(n-1) n

r        Reverse   - n a(n-1) a(n-2) a(n-3)
 $       Swap      - n a(n-1) a(n-3) a(n-2)
  :      Duplicate - n a(n-1) a(n-3) a(n-2) a(n-2)
   @     Rotate 3  - n a(n-1) a(n-2) a(n-3) a(n-2)
    +    Add       - n a(n-1) a(n-2) a(n)
     @   Rotate 3  - n a(n) a(n-1) a(n-2)
      r  Reverse   - a(n-2) a(n-1) a(n) n

চূড়ান্ত লাইনটি স্ট্যাকের নীচে সংখ্যাটি আউটপুট করে, যা ক্রমের প্রয়োজনীয় উপাদান।


2

সিজেম , 20 বাইট

1_2_{2$2$+}ri*;;;o];

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

ব্যাখ্যা

এটি OEIS পৃষ্ঠায় প্রদর্শিত পুনরাবৃত্তির সম্পর্কটি ব্যবহার করে ।

1_2_                   e# Push 1, 1, 2, 2 as initial values of the sequence
           ri          e# Read input
    {     }  *         e# Repeat block that many times
     2$2$              e# Copy the second and third elements from the top
         +             e# Add them
              ;;;      e# Discard the last three elements
                 o     e# Output
                  ];   e# Discard the rest to avoid implicit display

2

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

XXXIGX@DŠ0@+

ব্যাখ্যা

XXX            # initialize stack as 1, 1, 1
   IG          # input-1 times do:
     X@        # get the item 2nd from bottom of the stack
       DŠ      # duplicate and push one copy down as 2nd item from bottom of the stack
         0@    # get the bottom item from the stack
           +   # add the top 2 items of the stack (previously bottom and 2nd from bottom)
               # implicitly print the top element of the stack after the loop

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


1

ফ্রেট্রান, 104 93 বাইট

ইনপুট হয় 11**n*29এবং আউটপুট হয় 29**checkmate(n)

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

403/85 5/31 3/5 9061/87 3/41 37/3 667/74 37/23 7/37 38/91 7/19 5/77 1/7 1/17 1/2 340/121 1/11

Ungolfing

               At the start we have 11**n * 29
1/11           If n < 2, we remove the 11s and print 29**1
340/121        If n >= 2, we subtract two 11s (n-2) and add one 17, two 2s and one 5.
                 We now have 17**1 * 29**1 * 2**2 * 5.
                 These are the register for a, b, c at registers 17, 29, and 2.
                 5 is an indicator to start the first loop.
                 This loop will move a to register 13.
403/85 5/31    Remove the 17s one at a time, adds them to the 13 register.
                 5 and 31 reset the loop.
3/5            Next loop: moves b to a and adds b to a in register 13.
9061/87 3/41   Remove the 29s one at a time, adds them to the 17 and 13 registers.
                 3 and 41 reset the loop.
37/3           Next loop: moves c to b in register 29.
667/74 37/23   Remove the 2s one at a time, adds them to the 29 register.
                 37 and 23 reset the loop.
7/37           Next loop: moves a+b to c in register 2.
38/91 7/19     Remove the 13s one at a time, adds them to the 2 register.
                 7 and 19 reset the loop.
5/77           Move to the first loop if and only if we have an 11 remaining.
1/7 1/17 1/2   Remove the 7 loop indicator, and all 17s and 2s.
               Return 29**checkmate(n).

1

আসলে, 25 বাইট

সাধারণ f(n) = f(n-2) + f(n-3)পুনরাবৃত্ত সম্পর্কের জন্য এটি কিছুটা দীর্ঘ বলে মনে হচ্ছে । গল্ফিং পরামর্শ স্বাগত জানাই। এটি অনলাইন চেষ্টা করুন!

╗211╜¬`);(+)`nak╜2╜2<I@E

Ungolfing

         Implicit input n.
╗        Save n to register 0.
211      Stack: 1, 1, 2. Call them a, b, c.
╜¬       Push n-2.
`...`n   Run the following function n-2 times.
  );       Rotate b to TOS and duplicate.
  (+       Rotate a to TOS and add to b.
  )        Rotate a+b to BOS. Stack: b, c, a+b
         End function.
ak       Invert the resulting stack and wrap it in a list. Stack: [b, c, a+b]
╜        Push n.
2        Push 2.
╜2<      Push 2 < n.
I        If 2<n, then 2, else n.
@E       Grab the (2 or n)th index of the stack list.
         Implicit return.

1

আসলে , 18 বাইট

এটি ডেনিসের আর জেলি উত্তরের একটি বাস্তব বন্দর। গল্ফিং পরামর্শ স্বাগত জানাই। এটি অনলাইন চেষ্টা করুন!

3+;╖½Lur⌠;τ╜-@█⌡MΣ

Ungolfing

         Implicit input n.
3+       Add 3. For readibility, m = n+3.
;╖       Duplicate and store one copy of m in register 0.
½Lu      floor(m/2) + 1.
r        Range from 0 to (floor(m/2)+1), inclusive.
⌠...⌡M   Map the following function over the range. Variable k.
  ;        Duplicate k.
  τ╜-      Push m-2k. Stack: [m-2k, k]
  @█       Swap k and m-2k and take binomial (k, m-2k).
            If m-2k > k, █ returns 0, which does not affect the sum() that follows.
         End function.
Σ        Sum the list that results from the map.
         Implicit return.



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