কোলাকোস্কি ক্রমটি গণনা করুন


54

আমাদের সাম্প্রতিক মানগুলিতে I / O প্রয়োজনীয়তাগুলি সামঞ্জস্য করার জন্য এটি একটি পুরানো চ্যালেঞ্জের পুনরায় পোস্ট । আরও জনপ্রিয় ভাষাগুলি এই জনপ্রিয় অনুক্রম সম্পর্কে একটি চ্যালেঞ্জে অংশ নিতে দেয় এমন প্রয়াসে এটি করা হয়। পুনরায় পোস্টের আলোচনার জন্য এই মেটা পোস্টটি দেখুন ।

কোলাকোস্কি সিকোয়েন্সটি একটি মজাদার স্ব-রেফারেন্সিয়াল সিকোয়েন্স, যা OEIS সিকোয়েন্সেন A000002 হওয়ার গৌরব অর্জন করেছে (এবং এটি A000001 এর চেয়ে বোঝা এবং বাস্তবায়ন করা আরও সহজ)। অনুক্রমটি 1 দিয়ে শুরু হয় , কেবল 1 এস এবং 2 এস এবং সিকোয়েন্স উপাদান a (n) অনুক্রমের 1 ম বা 2 এস এর n ম রান দৈর্ঘ্য বর্ণনা করে । এটি অনুক্রমটিকে অনন্যরূপে সংজ্ঞায়িত করে (নীচে রানগুলির ভিজ্যুয়ালাইজেশন সহ):

1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,1,2,...
= === === = = === = === === = === === = = === = = === === = === =
1, 2,  2, 1,1, 2, 1, 2,  2, 1, 2,  2, 1,1, 2, 1,1, 2,  2, 1, 2, 1,...

আপনার কাজটি অবশ্যই এই ক্রমটি বাস্তবায়ন করা। আপনি এটির জন্য তিনটি বিন্যাসের মধ্যে একটি চয়ন করতে পারেন:

  1. একটি ইনপুট নাও এন এবং আউটপুট তম ক্রম, যেখানে মেয়াদের এন পারেন থেকে শুরু 0 বা 1
  2. একটি ইনপুট নাও এন এবং আউটপুট পদ প্রয়োজন এবং সহ এন ম ক্রম, যেখানে মেয়াদের এন শুরু পারেন থেকে 0 বা 1 (অর্থাত পারেন মুদ্রণ করতে, প্রথমে এন বা প্রথম এন + 1 টি পদ)।
  3. অনির্দিষ্টকালের জন্য ক্রম থেকে আউটপুট মান।

দ্বিতীয় এবং তৃতীয় ক্ষেত্রে, আপনি যে কোনও যুক্তিসঙ্গত, দ্ব্যর্থহীন তালিকার ফর্ম্যাট বেছে নিতে পারেন। উপাদানগুলির মধ্যে কোনও বিভাজক না থাকলে এটি ঠিক আছে, কারণ তারা সংজ্ঞা অনুসারে সর্বদা একক অঙ্ক হয় digit

তৃতীয় ক্ষেত্রে, যদি আপনার জমাটি কোনও ফাংশন হয় তবে আপনি অসীম তালিকা বা ভাষাগুলিতে কোনও জেনারেটরও তাদের সমর্থন করতে পারেন।

আপনি কোনও প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন এবং ইনপুট গ্রহণ এবং আউটপুট সরবরাহের আমাদের মানক পদ্ধতির কোনওটি ব্যবহার করতে পারেন । নোট করুন যে এই লুফোলগুলি ডিফল্টরূপে নিষিদ্ধ।

এটি , তাই সংক্ষিপ্ততম বৈধ উত্তর - বাইটগুলিতে মাপা - জয়।


সম্পর্কিত , তবে একটি ডুপ নয়।
ম্যাজিক অক্টোপাস n

সমস্যার জেনারালাইজেশন , তবে অনুক্রমের প্রাথমিক অংশটি স্থির হওয়ার কারণে অপ্টিমাইজেশন সম্ভবত সম্ভব।
জিউসেপ্পে

উত্তর:


17

জেলি , 7 বাইট

2Rṁxṁµ¡

এটি একটি সম্পূর্ণ প্রোগ্রাম যা প্রথম এন পদগুলি মুদ্রণ করে ।

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

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

2Rṁxṁµ¡  Main link. Argument: n (integer)

     µ   Combine the preceding links into a monadic chain.
      ¡  Set t = n.  Call the chain n times, updating t with the return value after
         each call. Yield the last value of t.
2R           Set the return value to 2 and take its range. Yields [1, 2].
  ṁ          Mold; cyclically repeat 1 and 2 to match t's length.
             In the first run, ṁ promotes t = n to [1, ..., n].
   x         Repeat the k-th element of the result t[k] times.
             In the first run, x repeats each element t = n times.
    ṁ        Mold; truncate the result to match the length of t.
             In the first run, ṁ promotes t = n to [1, ..., n].                 

উদাহরণ রান

চলুন এন = 5

চেইনের প্রথম অনুরোধটি দৈর্ঘ্য 5 এ পৌঁছানোর জন্য চক্রাকারে 1, 2 পুনরাবৃত্তি করে , তারপরে প্রতিটি উপাদান 5 বার করে এবং অবশেষে ফলাফলকে দৈর্ঘ্য 5 এ ছিন্ন করে ।

  1         2         1         2         1
x 5         5         5         5         5
---------------------------------------------------
  1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1

  1 1 1 1 1

এই দৈর্ঘ্য একটি তালিকা উৎপাদ 5 । প্রথম উপাদানটি কোলকোস্কি ক্রমের প্রথম উপাদান।

শৃঙ্খল পুনরাবৃত্তি দ্বিতীয় আবাহন 1, 2 cyclically দৈর্ঘ্য পৌঁছানোর 5 , তারপর পুনরাবৃত্তি উপাদান , বার যেখানে হয় পূর্ববর্তী তালিকার উপাদান, এবং পরিশেষে দৈর্ঘ্যের ফলাফলের কাটছাঁট করে 5

   1 2 1 2 1
x  1 1 1 1 1
------------
   1 2 1 2 1

   1 2 1 2 1

এই দৈর্ঘ্য আরেকটি তালিকা উৎপাদ 5 । প্রথম দুটি উপাদান হ'ল কোলকোস্কি অনুক্রমের প্রথম দুটি উপাদান।

প্রক্রিয়া আরও তিনটি পুনরাবৃত্তির জন্য অব্যাহত থাকে।

   1 2   1 2   1
x  1 2   1 2   1
----------------
   1 2 2 1 2 2 1

   1 2 2 1 2
   1 2   1   2 1
x  1 2   2   1 2
------------------
   1 2 2 1 1 2 1 1

   1 2 2 1 1
   1 2   1   2 1
x  1 2   2   1 1
----------------
   1 2 2 1 1 2 1

   1 2 2 1 1

এগুলি কোলাকোস্কি সিকোয়েন্সের প্রথম পাঁচটি উপাদান।


12

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

l=[2]
print 1,2,
for x in l:print x,;l+=x*[l[-1]^3]

অনির্দিষ্টকালের জন্য মুদ্রণ করে। তালিকাটি lপুনরাবৃত্তি হওয়ার সাথে সাথে তৈরি করে। প্রতিটি প্রবেশের xজন্য l, বর্তমানের শেষ উপাদানটির বিপরীতে যেগুলির xঅনুলিপি 1বা 2সংযোজন করা হয়।

প্রধান অসুবিধা হল প্রাথমিক স্ব-রেফারেন্টিয়াল খণ্ডটি নিয়ে কাজ করা [1,2,2]। এই কোডটি কেবল প্রাথমিক প্রিন্ট করে 1,2এবং সেখান থেকে এগিয়ে যায়। অতিরিক্ত মুদ্রণের জন্য 12 বাইট খরচ হয়। তা ছাড়া:

39 টি বাইট , প্রথম দুটি প্রবেশ অনুপস্থিত:

l=[2]
for x in l:print x;l+=x*[l[-1]^3]

আরেকটি পদ্ধতি হ'ল প্রথম দুটি এন্ট্রি বিশেষভাবে শুরু করা। আমরা আরম্ভ lহিসাবে [0,0,2]যাতে প্রথম দুই এন্ট্রি সংযোজন সৃষ্টি করে না, কিন্তু print x or nতাদের প্রিন্ট করা তোলে n

51 বাইট

l=[0,0,2]
n=1
for x in l:print x or n;l+=x*[n];n^=3

আর একটি সমাধান হ'ল l=[1]বিকল্পটি আরম্ভ করা , ম্যানুয়ালি বিকল্পটি ট্র্যাক করা nএবং মুদ্রণটি সংশোধন করা:

51 বাইট

n,=l=[1]
for x in l:print(l==[1,1])+x;l+=x*[n];n^=3

ছাড়া (l==[1,1])+, মুদ্রিত সিকোয়েন্স ব্যতীত সবকিছু যে কাজ করছে শুরু 1,1,2পরিবর্তে 1,2,2। আমরা এই দ্বিতীয় পদক্ষেপে স্বীকৃতি দেওয়ার আরও ভাল উপায় থাকতে হবে।

এবং অন্য একটি অদ্ভুত ফিক্স, একরকম একই বাইট গণনা:

51 বাইট

l=[1];q=2
for x in l:print x;l+=x*[l[-1]^3]*q;q=q<2

12

Wumpus , 13 11 বাইট

=[=)O?=!00.

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

বিভাজক ছাড়াই অনির্দিষ্টকালের জন্য ক্রম মুদ্রণ করে।

আমি কতটা সংক্ষেপে তা সত্যই অবাক হয়েছি।

ব্যাখ্যা

মূল ধারণাটি হ'ল ক্রমটি রাখা এবং বারে বারে নীচের সর্বাধিক উপাদানটি ব্যবহার করে অন্য রান তৈরি করা এবং তারপরে এটি মুদ্রণ করা। আমরা স্ট্যাকটিকে এখানে একটি সারি হিসাবে কার্যকরভাবে গালি দিচ্ছি। আমরা কাজ করে বাইট দুয়েক সংরক্ষণ করতে পারবেন 0এবং 1পরিবর্তে (আউটপুট শুধু বৃদ্ধিশীল) 1এবং 2, কারণ এই আমরা যেভাবে স্পষ্টভাবে একটি সঙ্গে স্ট্যাকের ইনিশিয়ালাইজ প্রয়োজন হবে না 1এবং আমরা দুটি মানের মধ্যে টগল করার জন্য যৌক্তিক অস্বীকৃতি ব্যবহার করতে পারেন।

     The entire program is run in a loop.
     At the beginning of loop iteration i, a(i)-1 will be at the bottom of the
     stack and the first element of the ith run of values will be on top.
     The caveat is that on the first iteration, the stack is empty, but
     popping from an empty stack produces an implicit zero.
=    Duplicate the top of the stack. Since this is defined as "pop x, push
     x, push x" this will result in 2 zeros when the stack is empty.
     After this we've got two copies of the ith run's value on top of the stack.
[    Pull up a(i)-1 from the bottom of the stack.
=)O  Duplicate, increment to a(i) and print it.
?=   If a(i)-1 is 1 (as opposed to 0), make another copy of the top of the
     stack. We've now got a(i)+1 copies, so one more than the run should be 
     long, but that's great because we can use the additional copy to get 
     the start of the next run.
!    Logical negation which swaps 0 and 1.
00.  Jump back to the beginning of the program.

10

ব্র্যাচল্যাগ , 30 26 25 23 17 16 14 বাইট

~a₀{1|2}ᵐḅlᵐ?l

প্রথম এন মানগুলি আউটপুট করে । .ইনপুট জন্য "আউটপুট ভেরিয়েবল" এবং "ইনপুট ভেরিয়েবল" এর আউটপুট ব্যবহার করে ?এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

এটি কীভাবে ঘোষণামূলকভাবে পরিণত হয়েছিল তা নিয়ে আমি বেশ খুশি: প্রোগ্রামটি মূলত আউটপুট তালিকার একটি উচ্চ-স্তরের বর্ণনা এবং ইনপুটটির সাথে সম্পর্কিত is

~a₀{1|2}ᵐḅlᵐ?l  Input is a number N.
                Output is a term that I'll call T.
~a₀             T is a prefix of a list L.
   {   }ᵐ       Each element of L
    1|2         is either 1 or 2.
         ḅ      If you cut L into blocks of equal elements
          lᵐ    and take the length of each block,
            ?   the result is T.
             l  The length of T is N.

কারণ {1|2}ᵐঅভিধান সংক্রান্ত ক্রমে তালিকাগুলি চেষ্টা করে, আউটপুটটি 1 দিয়ে শুরু হবে।


9

হুশ , 10 বাইট

Ṡωo↑⁰`Ṙ¢ḣ2

প্রথম এন মানগুলি প্রদান করে। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

Ṡωo↑⁰`Ṙ¢ḣ2  Input is an integer N.
        ḣ2  The range [1,2]
       ¢    Cycle: C = [1,2,1,2,1,2...
 ω          Iterate until fixed point is found:
Ṡ    `Ṙ      Replicate the list C element-wise according to the current list,
  o↑⁰        then take first N elements.

ইনপুট 20 এর জন্য, প্রক্রিয়াটি এরকম হয়:

[1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2...
[1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2]
[1,2,2,1,1,2,1,1,2,2,1,2,2,1,1,2,1,1,2,2]
[1,2,2,1,1,2,1,2,2,1,2,1,1,2,2,1,2,2,1,1]
[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,1,2]
[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1]
[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1]

1
এই সিকোয়েন্সটি অনির্দিষ্টকালের জন্য মুদ্রণের একটি ভিন্নতা, একই বাইট গণনা তবে সম্ভবত আপনি কিছু গল্ফিং সুযোগ দেখবেন যা আমি এটি অনলাইনে চেষ্টা
লিও

9

জাভা 10, 155 108 105 100 97 বাইট

v->{var s="122";for(int i=1;;s+=(1+i%2)*(s.charAt(i)>49?11:1))System.out.print(s.charAt(++i-2));}

সীমানা ছাড়াই অনির্দিষ্টকালের জন্য মুদ্রণ করে।

থেকে একটি পরোক্ষ ডগা পর -3 বাইট @Neil
-5 বাইটস @ মার্টিনএেন্ডারকে ধন্যবাদ ।
-3 বাইট জাভা 8 কে জাভা 10 তে রূপান্তর করে।

ব্যাখ্যা:

এটি অনলাইনে ব্যবহার করে দেখুন (টিআইওতে 60 সেকেন্ড পরে বেরিয়ে আসা)।

v->{              // Method with empty unused parameter and no return-type
  var s="122";    //  String, starting at "122"
  for(int i=1;;   //  Loop `i` from 1 upwards indefinitely
      s+=         //    After every iteration: Append the String with:
         (1+i%2)  //     1+`i`modulo-2
         *(s.charAt(i)>49?11:1))
                  //     either once or twice depending on the digit at index `i`
    System.out.print(s.charAt(++i-2));}
                  //   Print the character at index `i-2` of the String
                  //   After we've first increased `i` by 1 with `++i`

1
আপনি এই চেহারাটি এত সহজ করে তুলেছেন তা আমি পছন্দ করি।
এরিক দি আউটগল্ফার

টুইটারে :) আমি যখন চ্যালেঞ্জটি পড়ি তখন আমি কীভাবে শুরু করব তা নিশ্চিত ছিলাম না, তবে এটি আমাকে আঘাত করে (প্রাথমিকের সাথে একটি তালিকা ব্যবহার করে [1,2,2]সেখান থেকে যান) এবং আমি 155 বাইট উত্তর লিখেছিলাম (যা এখন স্ট্রিং ব্যবহার করে গল্ফ হয়) তালিকার পরিবর্তে)।
কেভিন ক্রুইজসেন

(3-i)পরিবর্তে ব্যবহার করবেন না কেন (1+i%2)?
এরিক আউটগল্ফার

1
@ এরিকথ আউটগলফার কারণ i1 বা 2 নয়, এটি স্ট্রিং সূচক।
মার্টিন ইন্ডার

7

জেলি , 10 বাইট

’߀+\<¹SḂ‘

ফেরত পাঠায় এন পরিভাষা।

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

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

’߀+\<¹SḂ‘  Main link. Argument: n (positive integer)

’           Decrement; yield n-1.
 ߀         Recursively map the main link over [1, ..., n-1].
   +\       Take the cumulative sum.
            The k-th sum is the combined length of the first k runs.
     <¹     Compare each sum with n.
       S    Sum the Booleans.
            This counts the number of runs that occur before the n-th term.
            If there's an even number (including 0) of runs, the n-th term is 1.
            If there's an odd number of runs, the n-th term is 2.
        Ḃ   Extract the least significant bit of the count.
         ‘  Increment.

7

হাস্কেল , 33 বাইট

r=r%1
~(x:t)%n=n:[n|x>1]++t%(3-n)

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

আরজান জোহানসেন প্রিফিক্সটিকে বাধ্য করার জন্য একটি অকাট্য প্যাটার্ন ব্যবহার করে 7 বাইট সংরক্ষণ করেছিলেন।


5
আপনি অলস করে 7 বাইট সংরক্ষণ করতে পারেন। এটি অনলাইন চেষ্টা করুন!
janrjan জোহানসেন

@ আরজানজাহানসেন এটি আশ্চর্যজনক এবং অলস প্যাটার্নটি আমার কাছে যাদু। আপনার নিজের উত্তর পোস্ট করতে চান?
xnor

নাহ তুমি সেখানে বেশিরভাগ পথে ছিলাম ব্যবহারের n:অভিব্যক্তি আপনাকে জানতে হবে না শুরুতে xপ্রথম উত্পাদন করতে নেই n। কিন্তু আপনি প্যাটার্ন প্রয়োজন অর্ডার ফাংশন পেয়ে আগেই চেক এড়ানোর জন্য অলস হতে n:
janrjan জোহানসেন

6

গোল> <> , 8 7 বাইট

:{:PnKz

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

ব্যাখ্যা

এটি আমার উইম্পাস উত্তরের একটি বন্দর । গোল> <> মূলত , Wumpus উত্তর (বিশেষত স্ট্যাকের নীচে অন্তর্নিহিত শূন্য, "ডুপ্লিকেট" বাস্তবায়িত "পপ, ধাক্কা ধাক্কা", এবং একটি স্ট্যাক ঘূর্ণন কমান্ড) পোর্টের সব প্রয়োজনীয় বৈশিষ্ট্য আছে যে ভাষা কিন্তু :

  • এটিতে টেরয়েডাল গ্রিড রয়েছে যার অর্থ 00.শুরুতে ফিরে লাফানোর জন্য আমাদের সুস্পষ্টর প্রয়োজন নেই ।
  • এটিতে K, যা "পপ এন, তারপরে পরবর্তী উপাদানগুলি এন বারের নকল করুন", যা ?=অন্য একটি বাইট সংরক্ষণ করে প্রতিস্থাপন করতে পারে ।

সুতরাং উইম্পাস থেকে গোল> <> এ ম্যাপিংটি হয়ে যায়:

Wumpus   Gol><>
=        :
[        {
=        :
)        P
O        n
?=       K
!        z
00.

6

শেক্সপিয়ার প্রোগ্রামিং ল্যাঙ্গুয়েজ , 594 583 572 বাইট

-10 বাইটের জন্য এড ওয়িনকে ধন্যবাদ!

,.Ford,.Puck,.Act I:.Scene I:.[Enter Ford and Puck]Ford:You cat!Open heart!You big cat!Open heart!Puck:Remember you!Remember me!Scene V:.Ford:You is the sum ofI a cat!Puck:Recall!Open heart!Ford:Remember a pig!Is I nicer a cat?If notyou be the sum ofyou a big pig!Scene X:.Puck:Recall!Ford:Is I nicer zero?If soremember I!If solet usScene X!Puck:Is I nicer zero?You is the sum ofI a big cat!If soyou is I!Remember zero!Remember I!Remember you!You be the difference betweena big cat you!Scene L:.Ford:Recall!Is you worse I?If so,let usScene V!Puck:Remember I!Let usScene L!

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

এটি এড ওয়িনের অলংগিক দ্রবণটির একটি গল্ফযুক্ত সংস্করণ , ২৮ বাইট সমাধান থেকে শুরু করে তিনি মন্তব্যগুলিতে যুক্ত করেছেন এবং সেখান থেকে কিছুটা বাদাম রেখেছেন

ব্যাখ্যা:

,.Ford,.Puck,.Act I:.Scene I:.[Enter Ford and Puck]    Boilerplate, introducing the characters
Ford:You cat!Open heart!You big cat!Open heart!  Print 1,2 as the first two terms of the sequence

Puck:Remember you!Remember me!  Initialise stack as 0, 2
                                Ford's value is currently 0, representing the value to be pushed to the stack

Scene V:.     Start infinite loop
  Ford:You is the sum ofI a cat!         
  Puck:Recall!Open heart!                 Pop the next value in the stack and print it
  Ford:Remember a pig!                    Push -1 as the end of the stack
  Is I nicer a cat?                       If Ford's value is 2
  If notyou be the sum ofyou a big pig! Subtract 2 from Puck's value to represent making 2 only one copy

        #Reverse the stack until it reaches the terminator value 0 or -1
  Scene X:.Puck:Recall!Ford:Is I nicer zero?If soremember I!If solet usScene X!

  Puck:Is I nicer zero?                          Check if the Puck's value is bigger than 0 (only making one copy)
  You is the sum of Ia big cat!                 Set Ford's value to Puck+2 to counter the change
  If soyou is I!                                But undo it if making one copies
  Remember zero!                                 Push 0 as the stack terminator
  Remember I!                                    Push Ford's value, which is 0 or -1 if this is a single copy, or 1 or 2 for a double copy
  Remember you!                                  Push one copy of Puck's value
  You be the difference betweena big cat you!   Map Ford's value from 1,2 to 1,0

  Scene L:.   #Reverse the stack until it reaches the terminator 0 
     Ford:Recall!Is you worse I?If solet us Scene V!
     Puck:Remember I!Let usScene L!

নিস! একক সন্তানের যমজ সন্তানের পরিবর্তে (-1 বা 0) করে আপনি 7 বাইট সংরক্ষণ করতে পারেন। এটি সিন এক্স এর ঠিক আগে আপনার 1 বাইট (যখন "যদি তাই" "যদি না হয়" হয়ে যায়) এবং অন্য একটি বাইট সিন এক্স লুপের ঠিক পরে (যখন "আমি যখন আপনি ভাল আছি" তখন "আমি কি নিস শূন্য" হয়ে যাই) costs সঞ্চয়টি হ'ল আপনি "যদি না হয় তবে আপনাকে মনে রাখবেন!" প্রতিস্থাপন করতে পারবেন সহজভাবে "আমাকে মনে রেখো!" এক লাইন আগে। আমরা হয় দ্বিতীয় বাচ্চা বা একটি অতিরিক্ত টার্মিনেটর sertোকান। (এজন্য আপনাকে সূক্ষ্ম-ভারসাম্যপূর্ণ পরিবর্তন করতে হবে "আমি কী আপনাকে ভাল আছি?" - আপনি আর সিন এক্স এর পরে ফোর্ডের উপর == 0 নির্ভর করতে পারবেন না)) এখানে টিআইও, 587 বাইট রয়েছে: tinyurl.com/yb9zg4gp
এড উইন

আপনি দৃশ্য এলতে প্রথম "যদি তাই" সরিয়ে ফেলতে পারেন এবং দৃশ্য ভি এর শুরুতে কমান্ডটি সরিয়ে ফেলতে পারেন এটি আপনাকে কেবল 1 বাইট সংরক্ষণ করে, কারণ আপনার একটি নতুন "ফোর্ড:" দরকার। তবে আপনি দৃশ্যের আইতে কয়েকটা বাইট সংরক্ষণ করুন, আপনি যতক্ষণ না ফোর্ডকে স্বয়ংক্রিয়ভাবে শূন্য-আরম্ভের উপর নির্ভর করতে পারেন। আপনার এটির উপর নির্ভর করার কোনও অধিকার নেই তবে এটি কার্যকর হতে পারে: এখানে টিআইও, 584 বাইট রয়েছে: tinyurl.com/y9f6vy7u
এড উইন

5

> <> , 13 12 বাইট

0:{:1+n?:0=!

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

মার্টিন ইন্ডার্স উইম্পাস উত্তর একটি বন্দর । দুর্ভাগ্যক্রমে, ><>একটি ইনক্রিমেন্ট বা বিপরীত কমান্ড নেই বা এটি স্ট্যাকের নীচে অন্তর্নিহিত 0s নেই, সুতরাং এটি কিছুটা দীর্ঘ হবে।


1
হ্যাঁ, গোল> <> মনে রাখার আগে আমার এইটাই ছিল। :)
মার্টিন ইন্ডার

5

জাভাস্ক্রিপ্ট, 67 66 60 58 52 51 50 বাইট

ঠিক আছে, এটি আমার মস্তিষ্কের চুলকানির চেয়ে বেশি হওয়া উচিত! nতম শব্দটি পুনরায় চালু করে 0-ইনডেক্সড।

s=`122`
x=1
f=n=>s[n]||f(n,s+=s[++x%2]*(s[x]+0-9))

5 + 1 টি বাইট ধন্যবাদ সংরক্ষিত TSH আমার ফাটা মস্তিষ্ক প্রারম্ভিক!


এটা পরীক্ষা করো

নীচে স্নিপেট প্রথম 50 টি শর্ত আউটপুট দেবে।


ব্যাখ্যা

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

s=`122`       :Initialise variable s as the string "122"
x=1           :Initialise variable x as integer 1
f=n=>         :Named function f taking input as an argument through parameter n
 s[n]         :If s has a character at index n, return it and exit
 ||           :Or
 f(n          :Call f with n again
  ,s+=        :At the same time, append to s
  s[++x%2]    :  Increment x, modulo by 2 and get the character at that index in s
  *           :  Multiplied by (the above gets cast to an integer)
  (s[x]+0-9)  :  Append a 0 to the xth character of s and subtract 9
 )            :  (The above gives "1"+0-9="10"-9=1 or "2"+0-9="20"-9=11)

কি সম্পর্কেn=>(g=s=>s[n]||g(s+(++x%2+1)*(10*s[x]-9)))('122',x=1)
tsh

বিটিডব্লিউ, s='122',x=1,g=n=>s[n]||g(n,s+=(++x%2+1)*(10*s[x]-9))একটি বৈধ জমা হিসাবে বিবেচনা করা হয় ?
tsh

ধন্যবাদ, @ এস। s[n]||গাছের জন্য কাঠ না দেখার স্পষ্ট ঘটনা ছিল! আপনার দ্বিতীয় পরামর্শটি বৈধ হবে না, যদিও ফাংশনটি কেবল একবার ডাকা যেতে পারে; s& xপ্রতিটি কল দিয়ে আরম্ভ করা প্রয়োজন।
শেগি

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

1
নিস! s[x]+0-9একটি সুন্দর ঝরঝরে কৌশল
জলি জোকার

4

পাইথন (2 এবং 3), 65 60 বাইট

f=lambda n:sum([f(i)*[i%2+1]for i in range(2,n)],[1,2,2])[n]

ফেরত পাঠায় এন ম এন্ট্রি, 0-ইন্ডেক্স।

বিকল্প (65 বাইট):

f=lambda n:n>1and sum([f(i)*[i%2+1]for i in range(n)],[])[n]or-~n

3
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার

1
আপনি (সম্ভবত, যদিও আমি পরীক্ষা করিনি) বিকল্প সংস্করণে 5 বাইট সংরক্ষণ [1,2,2]করতে পারেনsum
রোড

4

হাস্কেল , 48 বাইট

-1 বাইট ধন্যবাদ নিমিকে। -২ বাইট লিনকে ধন্যবাদ।

c=1:2:c
l=1:2:drop 2(id=<<zipWith replicate l c)

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

প্রতিটি উপাদানকে তার অবস্থান মোড 2 + 1 বার পুনরাবৃত্তি করুন।


আপনি সংজ্ঞা দিয়ে আরও দু'জনকে বাঁচাতে পারবেনc=1:2:c
লিন

4

ব্রেনফাক , 61 বাইট

+.+.[.[>]>+++>+++<<<[->+>->-<<<]<[[->+<]<]>>--[[>]<,<[<]>+]>]

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

অনির্দিষ্টকালের জন্য চার্ট কোড হিসাবে নম্বর মুদ্রণ করে। স্পষ্টতার জন্য, এখানে এমন একটি সংস্করণ রয়েছে যা সংখ্যায় মুদ্রণ করে (প্রথম দুটি উপাদান বাদে যা যাচাই করার পক্ষে যথেষ্ট সহজ)।

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

+.+. Prints the first two elements. These are the self-referential elements
     This also intitialises the tape with the third element, 2
[ Start infinite loop
   . Print current lowest element
   [>]>+++>+++ Move to end of tape and create two 3s
   <<<[->+>->-<<<] Subtract the last element of the tape from these 3s
   <[[->+<]<]>> Move to the beginning of the tape
   --  Subtract two from the first element
       This leaves 2 as 0 and 1 as -1
   [ If the number was 1
     [>]<,  Delete the excess element from the end of the tape
     <[<]>+ Remove the -1
   ]
   > Move to the next element of the list
]

4

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

গ্রিমে ধন্যবাদ 3 বাইট সংরক্ষণ করা

প্রথম এন আইটেম মুদ্রণ ।

Δ2LÞsÅΓI∍

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

ব্যাখ্যা

Δ           # repeat until ToS doesn't change
 2LÞ        # push [1,2,1,2 ...]               
    sÅΓ     # run-length encode with previous value (initially input)
       I∍   # extend/shorten to the length specified by input

রান-লেংথ ডিকোডিং এখন একটি অন্তর্নির্মিত, তাই এটি সহজভাবে হতে পারে 2L[2LÞsÅΓ
গ্রিমি

নাকি ভালো: ∞[2LÞsÅΓ
গ্রিমি

অথবা এমন Δ2LÞsÅΓI∍কোনও সংস্করণের জন্য যা ইনপুট দেওয়া প্রথম এন আইটেমগুলি প্রিন্ট করে।
গ্রিমি

@ গ্রিমি: ধন্যবাদ! আমি প্রথম এন সংস্করণটি পছন্দ করি যেহেতু এটি আসলে শেষ হয় :)
এমিগিনা

3

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

ƵLS[DNÌ©èF®É>¸«

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

ব্যাখ্যা

ƵLS               # push our initial list [1,2,2]
   [              # for every N in [0 ...
    D             # duplicate current list of numbers
     NÌ©è         # get the N+2'th element from the list
         F        # that many times do
          ®É>     # push ((N+2)%2==1)+1
             ¸«   # append to current list

পরিবর্তে ¸«, =সেগুলি 2 টি বাইট সংরক্ষণের জন্য মুদ্রণ করবে। ƵLS[NÌ©èF®É>=, যদি আপনি সেবন না করেন তবে ডুপ করার দরকার নেই।
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টোপাস উর্ন: যদিও আমি প্রথম 3 টি আইটেম তৈরি করি না, তাই দুর্ভাগ্যক্রমে
মুদ্রণটি


3

জে , 12 বাইট

একক যুক্তি ফাংশন এন নিচ্ছে এবং প্রথম এন পদ তৈরি করে । এটি অনলাইন চেষ্টা করুন!

$(1+2|I.)^:]

পুরানো প্রশ্নের স্রেফ আমার পুরানো উত্তর সন্ধান করছি।

I.একটি ক্রিয়া যা সংখ্যার একটি অ্যারে নিয়ে থাকে এবং সূচকগুলির একটি তালিকা ছিটকে দেয়, যাতে অ্যারেতে k -th আইটেমটি n হয় , তবে সূচক k n বার প্রদর্শিত হবে । আমরা এটি প্রাথমিক বীজ থেকে কলাকোভস্কি ক্রম বুটস্ট্র্যাপ করতে ব্যবহার করব। প্রতিটি পদক্ষেপ নিম্নলিখিত হিসাবে এগিয়ে যাবে:

1 2   2   1 1 2   1 2   2   1   (some prefix)
0 1 1 2 2 3 4 5 5 6 7 7 8 8 9   (use I.)
0 1 1 0 0 1 0 1 1 0 1 1 0 0 1   (mod 2)
1 2 2 1 1 2 1 2 2 1 2 2 1 1 2   (add 1) 

যদি আমরা 1+2|I.10 থেকে শুরু করে এই অপারেশন ( ) সম্পাদন করি তবে এটি এমন কিছু দেখাচ্ছে:

10
1 1 1 1 1 1 1 1 1 1
1 2 1 2 1 2 1 2 1 2
1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
1 2 2 1 1 2 1 1 2 2 1 2 2 1 1 ...
1 2 2 1 1 2 1 2 2 1 2 1 1 2 2 ...
1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 ...

খেয়াল করুন যে প্রতিবার আমরা কীভাবে আরও বেশি সঠিক শর্তাদি পাই এবং কিছুক্ষণ পরে প্রথম এন শর্তাদি স্থির হয়। স্থির হয়ে ওঠার জন্য এটির সংখ্যাটি সঠিকভাবে বর্ণনা করা শক্ত, তবে এটি এন এর মধ্যে মোটামুটি লগারিদমিক বলে মনে হচ্ছে , সুতরাং আমরা যদি কেবল এটি এন বার চালাই (তবে ^:]) এটি ঠিক হবে। (আরও তথ্যের জন্য এই অন্যান্য OEIS ক্রমগুলি দেখুন: প্রজন্মের দৈর্ঘ্য , আংশিক অঙ্কগুলি ))

একবার আমরা এটি শেষ হয়ে গেলে, আমাদের কেবল প্রথমে এন ব্যবহার করে শর্তাদি গ্রহণ করতে হবে $। যে $vকোনও ক্রিয়াপদের জন্য নির্মাণ vহুকের উদাহরণ এবং এটি nযুক্তি হিসাবে দেওয়া কার্যকর হবে n $ (v n)

এখানে পুরাতন 13-বাইট সংস্করণ সময় এবং স্থান অনেক কম অযথা নন: ($1+2|I.)^:_~। এটি প্রতিটি পদক্ষেপে ইনপুটটি ছাঁটাই করে, তাই আমরা স্থির করার জন্য যতটা প্রয়োজন ঠিক ঠিক ততবার চালাতে পারি, রৈখিকভাবে বহুবার পরিবর্তে।


ওহ এটি সঙ্গে পুরোপুরি কাজ করে I.। আমি সর্বদা এটির অনুলিপিটি কিছু গল্ফে ব্যবহৃত হয়েছিল তা দেখতে চেয়েছিলাম।
মাইল মাইল

3

Fueue , 30 বাইট

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

1)2:[[2:])~)~:~[[1]:~))~:~~]~]

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

উপরেরগুলি নিয়ন্ত্রণ কোড হিসাবে অঙ্কের একটি অবিরাম তালিকা ছাপায়। 34 বাইটের জন্য এটি আসল অঙ্কগুলি মুদ্রণ করতে পারে:

49)50:[[50:])~)~:~[[49]:~))~:~~]~]

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

বাকি ব্যাখ্যায় উত্তরোত্তর সংস্করণ ব্যবহার করা হয়।

Fueue উপাদানগুলির সংক্ষিপ্তসার

Fueue সারিতে নিম্নলিখিত ধরণের উপাদান থাকতে পারে:

  • পূর্ণসংখ্যা, যা কার্যকর করা হলে তাদের ইউনিকোড কোডপয়েন্টটি মুদ্রণ করে,
  • স্কয়ার-ব্র্যাকেটটি সীমিত করা সাবপ্রোগ্রাম ব্লকগুলি, যেগুলি করুণার সাথে নিষ্ক্রিয় (কেবল সারিটির শেষ প্রান্তে চলে যাওয়া) যদি না )ফাংশনটি তাদেরকে থামিয়ে দেয় এবং এবং
  • একক-চরিত্রের ফাংশন, যা কার্যকর হয় যদি তারা সঠিক ধরণের আর্গুমেন্ট অনুসরণ করে এবং অন্যথায় নিষ্ক্রিয় থাকে।
    • এই প্রোগ্রামটিতে ব্যবহৃত কেবলমাত্র ফাংশনগুলি হ'ল ( ~নিম্নলিখিত দুটি উপাদানকে অদলবদল করা), :(পরের উপাদানটির সদৃশ করুন) এবং )(নিম্নলিখিত ব্লকটি ডিলক করুন)।

উচ্চ স্তরের ওভারভিউ

প্রোগ্রামের প্রধান লুপ চলাকালীন, সারিটি নিয়ে থাকে:

  • অঙ্কগুলির প্রতিনিধিত্বকারী ব্লকের একটি শৃঙ্খলের মাধ্যমে পুনরাবৃত্তি করতে হবে;
    • একটি অঙ্ক 1 বা 2 যথাক্রমে ব্লকগুলি [49]এবং প্রতিনিধিত্ব করে [50:]
  • একটি স্ব-সদৃশ প্রধান লুপ বিভাগ যা অঙ্কের ব্লকগুলি অনুসরণ করে এবং 1s এবং 2 এর পরে বিকল্পগুলি রাখে, তারপরে সেগুলি ডিফল্ট করে।
    • একটি ডিফল্ট অঙ্কের ব্লকটি তার নিজস্ব অঙ্ক ডি প্রিন্ট করে এবং তারপরে নিম্নলিখিত ব্লকের ডি কপিগুলি তৈরি করে, সুতরাং এটি বর্ণিত রানের জন্য অঙ্কগুলি তৈরি করে।

প্রথম 10 কমান্ডের নিম্ন স্তরের ট্রেস

Cmds   Explanation              Queue
49     Print '1'.               )50:[[50:])~)~:~[[49]:~))~:~~]~]
)      Inactive, move to end.   50:[[50:])~)~:~[[49]:~))~:~~]~])
50     Print '2'.               :[[50:])~)~:~[[49]:~))~:~~]~])
:[...] Duplicate block.         )[[50:])~)~:~[[49]:~))~:~~]~][[50:])~)~:~[[49]:~))~:~~]~]
)[...] Deblock (rmv. brackets). [[50:])~)~:~[[49]:~))~:~~]~][50:])~)~:~[[49]:~))~:~~]~
[...]  Inactive.                [50:])~)~:~[[49]:~))~:~~]~[[50:])~)~:~[[49]:~))~:~~]~]
[50:]  Inactive.                )~)~:~[[49]:~))~:~~]~[[50:])~)~:~[[49]:~))~:~~]~][50:]
)      Inactive.                ~)~:~[[49]:~))~:~~]~[[50:])~)~:~[[49]:~))~:~~]~][50:])
~)~    Swap ) and ~.            :~[[49]:~))~:~~]~[[50:])~)~:~[[49]:~))~:~~]~][50:])~)
:~     Duplicate ~.             [[49]:~))~:~~]~[[50:])~)~:~[[49]:~))~:~~]~][50:])~)~~

একটি সম্পূর্ণ প্রধান লুপ পুনরাবৃত্তির ওয়াকথ্রু

পৃথক কমান্ডের জন্য alচ্ছিক সাদা স্থান beenোকানো হয়েছে।

49 ) 50 :[[50:])~)~:~[[49]:~))~:~~]~]

চক্র 1: 49প্রিন্ট 1)নিষ্ক্রিয়, মূল লুপ ব্লকের সাথে একত্রিত হওয়ার জন্য অপেক্ষা করছে। 50কপি করে প্রিন্ট 2:মূল লুপ ব্লকটি নকল করে (যার স্ব-প্রতিলিপিটির জন্য একটি অনুলিপি প্রয়োজন))

) [[50:])~)~:~[[49]:~))~:~~]~] [[50:])~)~:~[[49]:~))~:~~]~]

চক্র 2: )প্রথম প্রধান লুপ ব্লকটি ডিফলক করে এটি পরবর্তী চক্রটি কার্যকর করা শুরু করে।

[50:] ) ~)~ :~ [[49]:~))~:~~] ~[[50:])~)~:~[[49]:~))~:~~]~]

চক্র 3: [50:]শৃঙ্খলে উত্পাদিত প্রথম 2অঙ্কটি উপস্থাপন করে, এটি এখনও সরানো হয়নি। নিম্নলিখিত )প্রধান লুপটি এটি অনুসরণ করার পরে নিম্নলিখিতটি শেষ পর্যন্ত তা করবে। ~)~:~এর গল্ফযুক্ত (একটি সোয়াপ এবং একটি অনুলিপি ব্যবহার করে) এর এক-চক্রের বিলম্ব ~)~~[[49]:~))~:~~]নিষ্ক্রিয় ডিজিটের ব্লকটি ~অনুসরণ করে নিম্নলিখিত প্রধান লুপ ব্লকটি অদলবদল করে [50:]

) ~)~ ~[[49]:~))~:~~][50:] [[50:])~)~:~[[49]:~))~:~~]~]

চক্র 4: )এখনও অপেক্ষা ~)~উত্পাদন করে ~), ~অদলবদল [[49]:~))~:~~]গত [50:]অঙ্ক ব্লক।

) ~)[50:] [[49]:~))~:~~] [[50:])~)~:~[[49]:~))~:~~]~]

চক্র 5: ~অজানা ব্লকটি অদলবদল )করে [50:]

)[50:] )[[49]:~))~:~~] [[50:])~)~:~[[49]:~))~:~~]~]

চক্র 6: প্রথমটি )এখন ডিজিট [50:]ব্লকটি ডিফলক করে , পরেরটি )সাবপ্রগ্রামটি ডিফলক করে [[49]:~))~:~~]

50 :[49] :~ ) ) ~:~ ~[[50:])~)~:~[[49]:~))~:~~]~]

চক্র 7: 50প্রিন্ট করে 2, :সুনির্দিষ্ট উত্পাদিত [49]অঙ্ক ব্লকটিকে নকল করে , দু'জনের রান তৈরি করে 1:~))~:~এর এক-চক্রের বিলম্ব ~~))~:~প্রথমটি শেষ করে বাকি মূল লুপ ব্লকটি অদলবদল করে [49]

[49] ~~) ) ~:[49] [[50:])~)~:~[[49]:~))~:~~]~]

চক্র 8: এর ~~))এক-চক্রের বিলম্ব )~)। বর্তমানে ট্র্যাভারড ~অদলবদল ।:[49]

[49] ) ~)[49] :[[50:])~)~:~[[49]:~))~:~~]~]

চক্র 9: ~অদলবদল )গত [49]:প্রধান লুপ ব্লক সদৃশ।

[49] )[49] )[[50:])~)~:~[[49]:~))~:~~]~] [[50:])~)~:~[[49]:~))~:~~]~]

চক্র 10: প্রথমটি )অঙ্কিত ব্লকটিকে কেবল সরাতে পেরেছে [49], দ্বিতীয়টি )পরবর্তী ল্যাপটিকে অতিক্রম করতে প্রধান লুপটি পুনরায় চালু করবে (উপরে সারির শুরুতে প্রদর্শিত হবে))


চমৎকার কাজ! আমি কিছু ফিউইউ শিখার কারণ এবং এইচডাব্লু চ্যালেঞ্জের জবাব দিয়েছি কারণ আমি আসলে এই চ্যালেঞ্জটির জন্য এটি খতিয়ে দেখেছি, তবে শেষ পর্যন্ত কিউ-ভিত্তিক প্রকৃতির দ্বারা খুব ভয় পেয়েছি। এটি Fueue জন্য সত্যিই দুর্দান্ত স্কোর! :)
মার্টিন ইন্ডার

3

x86, 41 37 35 33 28 বাইট

আমি বিভিন্ন x86 নির্দেশাবলীর সাথে ঘোরাঘুরি করতে অনেক মজা পেয়েছি কারণ এটি আমার প্রথম "অ-তুচ্ছ" x86 উত্তর। আমি আসলে প্রথম x86-64 শিখেছি এবং আমি আমার প্রোগ্রামটি 32-বিটে রূপান্তর করে অনেকগুলি বাইট সংরক্ষণ করেছি।

এটি OEIS থেকে ব্যবহৃত অ্যালগরিদমটি অ্যারেগুলিতে ধাক্কা দেয় যা x86- এর জন্য উপযুক্ত করে তোলে এবং স্ট্যাকের মানগুলি সংরক্ষণ করে (নোট এমআইপিসের স্ট্যাকের নির্দেশাবলী নেই)।

বর্তমানে প্রোগ্রামটি Nইনপুট হিসাবে মান গ্রহণ করে এবং অনুক্রমের মধ্যে নবম মানের প্রতিনিধিত্ব করে নবম উপাদান সহ একটি অ্যারের ecxএকটি ঠিকানা ফেরত ebpদেয়। আমি ধরে নিলাম স্ট্যাকটিতে ফিরে আসা এবং অতিরিক্ত মানগুলি গণনা করা বৈধ (আমরা যেভাবে যাই হোক না কেন অ্যারে ছাড়িয়ে কী আবর্জনা হিসাবে বিবেচনা করি)।

পরিবর্তণের

  • প্রতিটি পুনরাবৃত্তির x = 2 - n%2সাথে গণনা xorকরে -4 বাইট

  • লুপের পরিবর্তে ডু-ওয়েট ব্যবহার করে -2 বাইট।

  • -2 বাইটগুলি প্রাথমিক মান 1, 2, 2 ব্যবহার করে টিপুন eax

  • -5 বাইটগুলি nস্পষ্টভাবে সংরক্ষণ না করে এবং পরিবর্তে লুপের Nসময় চালিয়ে running

.section .text
.globl main
main:
        mov     $10, %ecx           # N = 10 

start:
        mov     %esp, %ebp          # Save sp
        push    $1
        push    $2                  # x = 2
        pop     %eax       
        push    %eax                # push 2
        push    %eax                # push 2
        mov     %esp, %esi          # sn = stack+3 addr

loop:                               
        xor     $3, %al             # flip x between 1 <-> 2 
        push    %eax                # push x      
                                    # maybe use jump by parity?
        cmp     $2, (%esi)          # if *sn == 2 
        jne     loop1
        push    %eax                # push x

loop1: 
        sub     $4, %esi            # sn += 1
        loop    loop                # --N, do while (N)
end:
        mov     %ebp, %esp          # Restore sp
        ret

Objdump:

00000005 <start>:
   5:   89 e5                   mov    %esp,%ebp
   7:   6a 01                   push   $0x1
   9:   6a 02                   push   $0x2
   b:   58                      pop    %eax
   c:   50                      push   %eax
   d:   50                      push   %eax
   e:   89 e6                   mov    %esp,%esi

00000010 <loop>:
  10:   34 03                   xor    $0x3,%al
  12:   50                      push   %eax
  13:   83 3e 02                cmpl   $0x2,(%esi)
  16:   75 01                   jne    19 <loop1>
  18:   50                      push   %eax

00000019 <loop1>:
  19:   83 ee 04                sub    $0x4,%esi
  1c:   e2 f2                   loop   10 <loop>

0000001e <end>:
  1e:   89 ec                   mov    %ebp,%esp
  20:   c3                      ret 

3

সি (জিসিসি) , 72 71 65 64 62 বাইট

-9 বাইটস @ সিলিংক্যাটকে ধন্যবাদ

x,y;f(z){for(x=y=-1;putchar(49-~x%2);y=-~y|z&x/2)x^=z=y&~-~y;}

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

অনির্দিষ্টকালের জন্য ক্রমের মান উত্পন্ন করে (চ্যালেঞ্জ থেকে বিকল্প 3)


ব্যাখ্যা করুন! এটি কীভাবে কাজ করে সে সম্পর্কে আমার কোনও ধারণা নেই। কোন অ্যারে নেই! বিট হিসাবে একটিতে সংখ্যাটি খুব ছোট থাকে।
janর্জন জোহানসেন

@ আরজান জোহেনসেন আমাকে স্বীকার করতে হবে, এটি কীভাবে কাজ করে তা আমার কোনও ধারণা নেই! :) আমি ওএআইএস০০০০২২ থেকে অজগর বাস্তবায়ন করেছি , এটি সি তে পোর্ট করে গল্ফ দিয়েছিলাম :)
ওয়াজট

আহ আমি ভেবেছিলাম এটি হয়ত এখানে কিছু ছিল তবে পাইথনটি খুঁজে পাওয়ার জন্য পৃষ্ঠার নিচে তেমন লাগেনি। একটি ব্যাখ্যার লিঙ্ক আছে , তবে এটি লিঙ্ক বিভাগে কিছুটা সমাহিত হয়েছিল। এই পদ্ধতিটি অবশ্যই কমপক্ষে পাশাপাশি সি ফিট করে।
আরজান জোহানসেন

1) পিএইচপি 56 বাইট: for($x=$y=-1;;$y=$y+1|$f&.5*$x^=$f=$y&-$y-2)echo$x&1?:2;। 2) 50-x%2আপনার জন্য একটি বাইট সংরক্ষণ করা উচিত। 3) আমি এটি দিয়ে চালিত করার চেষ্টা করেছি x=y=1; তবে এখন পর্যন্ত অপারেশনগুলি পাওয়া যায়নি। পারবে তুমি?
টাইটাস


2

জাভাস্ক্রিপ্ট ES6 - 71 70 68 বাইট

(_="122")=>{for(x=1;;_+=(1+x%2)*(_[x]>1?11:1))console.log(_[++x-2])}

1 বিট সংরক্ষিত নীলকে ধন্যবাদ

আমার ভুল সংশোধন করার জন্য শ্যাগির জন্য ট্যাঙ্কস , 1 বিট সংরক্ষণ করার জন্য।

f = (_="122") => {
  for(x=1;x<20;_+=(1+x%2)*(_[x]>1?11:1))
    document.getElementById('content').innerHTML += '   ' + _[++x-2]
}
f()
<div id="content"></div>


এটি আমার জাভা 8 টির উত্তরের বন্দরের মতো ( x=0পরিবর্তে বাদে x=1) দেখায় , তবে @ শেগি সত্যই সঠিক: এটি তার বর্তমান ফর্মে কাজ করে না (আমি ,i=100;i-->0অস্থায়ীভাবে প্রথম 100 আইটেমগুলি দেখার জন্য যুক্ত করেছি, পরিবর্তে একটি আউটপুট দেখার আগে 60 সেকেন্ড অপেক্ষা করুন)। যদিও এটি কাজ করে না কোনও ধারণা নেই। জেএস আমার জিনিস নয়।
কেভিন ক্রুজসসেন

সমস্যাগুলি হ'ল: 1 এর পরিবর্তে 0 টি 1.শুরু xকরা (যেমন @ কেভিন ক্রুজসেন উল্লেখ করেছেন) এবং স্ট্রিংয়ের তৃতীয় অক্ষরটি যা কেবল কখনও 1 বা 2 হতে পারে 49 এর চেয়ে বেশি 2.কিনা তা পরীক্ষা করে দেখছেx
শ্যাগি

2
এখানে স্থির সমাধানটির গল্ফ ডাউন (তবে পুরোপুরি পরীক্ষিত নয়) সংস্করণটি দেওয়া আছে: tio.run/…
শেগি

(_[x]*10-9)চেয়ে(_[x]>1?11:1)
l4m2

2

অ্যাপলসীড , 89 বাইট

(def K(lambda()(concat(q(1 2))(drop 2(flatten(zip-with repeat-val(cycle(q(1 2)))(K)))))))

Kএমন কোনও ফাংশন সংজ্ঞায়িত করে যা কোনও আর্গুমেন্ট নেয় না এবং কোলাকোস্কি ক্রমকে অসীম তালিকা হিসাবে প্রদান করে। এটি অনলাইন চেষ্টা করুন!

এই পদ্ধতির সম্পূর্ণরূপে হাস্কেল উত্তর দ্বারা অনুপ্রাণিত হয়েছিল । আমার আসল পদ্ধতিটি দীর্ঘ ছিল এবং সম্ভবত ও (2 ^ n) ছিল। : ^ পি

Ungolfed

(def kolakoski
 (lambda ()
  (concat (list 1 2)
   (drop 2
    (flatten
     (zip-with repeat-val
      (cycle (list 1 2))
      (kolakoski)))))))

রিটার্ন তালিকা দিয়ে শুরু হয় (1 2)। এরপরে, এর বাকি অংশগুলি তৈরি করতে (ভিতরে থেকে বাইরে পড়া):

  • (kolakoski)কোলকোস্কি সিকোয়েন্স তালিকাটি পেতে পুনরাবৃত্তভাবে কল করুন (অলস মূল্যায়নের কারণে, তালিকাটি এখনও পুরোপুরি তৈরি করা হয়নি তা বিবেচনা করে না)
  • (cycle (list 1 2)) অসীম তালিকা তৈরি করে (1 2 1 2 1 2 ...)
  • দুটি অসীম তালিকা একসাথে ফাংশনটি ব্যবহার করে জিপ করুন repeat-val। এটি কোলাকোস্কি তালিকার সাথে সম্পর্কিত মানের উপর নির্ভর করে তালিকা থেকে 1বা এক 2থেকে cycleদু'বার পুনরাবৃত্তি করবে । ফলাফল:((1) (2 2) (1 1) ...)
  • flatten যে তালিকাতে (1 2 2 1 1 ...)
  • আমরা ইতিমধ্যে এর থেকে প্রথম দুটি পদ পেয়েছি (concat (list 1 2), সুতরাং আমরা dropসদৃশ এড়াতে উত্পন্ন তালিকা থেকে প্রথম দুটি পেয়েছি।

2

স্ট্যাক্স , 12 বাইট

╦╥2Bïß▄n»-[╒

এটি চালান এবং এটি ডিবাগ করুন

এটি একই প্রোগ্রামের আসকি উপস্থাপনা।

G@}2R;D{|;^]*m$

এটি ক্রমটি x বার প্রসারিত করে যেখানে এক্স ইনপুট। তারপরে এটি 0 -সূচকযুক্ত x তম উপাদানটিকে আউটপুট করে ।

G }             G jumps to trailing } and returns when done
 @              get xth element in array
   2R           [1, 2]
     ;D         repeat the rest x times
       {     m  map array using block
        |;^]    produces [1] and [2] alternately
            *   repeat array specified number of times
              $ flatten array

এখানে একটি বোনাস 12-বাইট সমাধান যা অসীম স্ট্রিম হিসাবে আউটপুট উত্পাদন করে। শুরু করতে রান টিপুন।


2

আর, 63 বাইট বা 61 বাইট

বাস্তবায়ন 1: অনুক্রমের n তম শব্দটি মুদ্রণ করে ।

x=scan()
a=c(1,2,2)
for(n in 3:x)a=c(a,rep(2-n%%2,a[n]))
a[x]

বাস্তবায়ন 2: অনুক্রমের প্রথম এন পদগুলি মুদ্রণ করে ।

x=scan()
a=c(1,2,2)
for(n in 3:x)a=c(a,rep(2-n%%2,a[n]))
a[1:x]

(পার্থক্যটি কেবলমাত্র শেষ লাইনে)

হ্যাঁ, হ্যাঁ, আপনি অভিযোগ করতে পারেন যে আমার সমাধানটি অকার্যকর, এটি প্রয়োজনের তুলনায় সত্যিকার অর্থে আরও শর্তগুলি গণনা করে ...

আপডেট: 9 বাইট বন্ধ শেভ করার জন্য @ জিউজ্পেকে ধন্যবাদ ।


1
কিছু লাইট ছাঁটাই করতে a=c(a,rep(2-n%%2,a[n]))দ্বিতীয় forলুপের পরিবর্তে ব্যবহার করুন ।
জিউসেপ্পে

@ জিউসেপ বাস্তবায়িত, ধন্যবাদ!
Andreï Kostyrka

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

2

শেক্সপিয়ার প্রোগ্রামিং ল্যাঙ্গুয়েজ, 575 বাইট (তবে ত্রুটিযুক্ত), বা 653 বা 623 বাইট

,.Puck,.Ford,.Act I:.Scene X:.[Enter Puck and Ford]Ford:You big cat!Scene L:.Ford:Is I nicer zero?If so,let us Scene V.Is you nicer a big cat?If so,you is the sum of you a big lie.If so,open heart!Open heart!Scene M:.Puck:Remember you!Is I nicer a cat?You big cat.If so,you cat.Ford:Recall!Is you nicer zero?If not,let us Scene X.Is you nicer a big cat?If not,let us Scene M.You is the sum of you a big lie.Scene V:.Ford:Remember you!Is you worse a big big cat?If not, you big cat.Is you as big as a big cat?If not,you zero.You is the sum of I you.Puck:Recall!Let us Scene L.

তীব্র প্রতিযোগিতায় এসপিএল বিভাগে এটি জো কিংয়ের বর্তমান প্রবেশকে (583 বাইট) পরাজিত করবে, এটি ত্রুটিযুক্ত ছাড়া: প্রথমত, এটি টিআইও সংস্করণে চালিত হয় না (এসপিএল ওয়েবসাইট বাস্তবায়ন করে) - তবে এটি পার্লে চলে না সংস্করণ , তাই সম্ভবত এটি একটি গুরুতর ত্রুটি নয়। দ্বিতীয়ত, যদিও এটি প্রথম দুটি অঙ্ক মুদ্রণ করে না। যদি আমরা জো কিং এর সমাধানগুলিতে সেই ত্রুটিটিকে অনুমতি দিয়ে থাকি তবে সেই ত্রুটিযুক্ত সমাধানটি আমার ত্রুটিযুক্ত সমাধানকে মারধর করে 553 বাইট হবে।

আমার সমাধান দুটি কারণে টিআইও-তে ব্যর্থ হয়েছে: আমরা যখন খালি শূন্য ফিরে আসি তখন একটি শূন্য স্ট্যাকের উপর নির্ভর করার চেষ্টা করি; এবং "[ফোর্ড এবং পাক প্রবেশ করুন]" দিয়ে আমরা প্রথম দৃশ্যটি পেয়েছি, যদিও কেউ মঞ্চ ছাড়েনি। এগুলি পার্ল সংস্করণে কেবল সতর্কতা। যদি আমি এই ত্রুটিগুলি স্থির করে এবং প্রথম দুটি সংখ্যায় রাখি তবে আমি 653 বাইটে পৌঁছাচ্ছি:

 ,.Puck,.Ford,.Act I:.Scene I:.[Enter Puck and Ford]Ford:You cat!Open heart!You big cat!Open heart!You zero!Scene X:.Ford:Remember you!You big cat!Scene L:.Ford:Is I nicer zero?If so,let us Scene V.Is you nicer a big cat?If so,you is the sum of you a big lie.If so,open heart!Open heart!Scene M:.Puck:Remember you!Is I nicer a cat?You big cat.If so,you cat.Ford:Recall!Is you nicer zero?If not,let us Scene X.Is you nicer a big cat?If not,let us Scene M.You is the sum of you a big lie.Scene V:.Ford:Remember you!Is you worse a big big cat?If not, you big cat.Is you as big as a big cat?If not,you zero.You is the sum of I you.Puck:Recall!Let us Scene L.

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

আমি পার্ল বাস্তবায়নে 623 বাইট ব্যবহার করে সম্পূর্ণ ক্রম উত্পন্ন করতে পারি:

,.Puck,.Ford,.Act I:.Scene I:.[Enter Puck and Ford]Ford:You cat!Open heart!You big cat!Open heart!Scene L:.Ford:Is I nicer zero?If so,let us Scene V.Is you nicer a big cat?If so,you is the sum of you a big lie.If so,open heart!Open heart!Scene M:.Puck:Remember you!Is I nicer a cat?You big cat.If so,you cat.Ford:Recall!Is you worse a cat?If so,you big cat!If so,let us Scene L.Is you nicer a big cat?If not,let us Scene M.You is the sum of you a big lie.Scene V:.Ford:Remember you!Is you worse a big big cat?If not, you big cat.Is you as big as a big cat?If not,you zero.You is the sum of I you.Puck:Recall!Let us Scene L.

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

ব্যাখ্যা

আমরা ক্রমে ভেরিয়েবলগুলির ক্রম সংরক্ষণ করি: পকের স্ট্যাক (নীচে থেকে উপরে), পকের মান, ফোর্ডের মান, ফোর্ডের স্ট্যাক (উপরে থেকে নীচে)। প্রান্তে শূন্য মান বাদে (শূন্যের সাথে বাম দিকে শূন্য স্ট্যাকটি পপিং করা থেকে শুরু করে) প্রতিটি মান হ'ল সেই প্রজন্মের পরবর্তী অঙ্কটি হ'ল, যদি পরবর্তী প্রজন্মের সেই পিতামাতার কাছ থেকে অন্য সন্তানের প্রয়োজন হয় তবে 2 যোগ করা হয়। যখন আমাদের ক্রমগুলিতে N অ-শূন্য মান রয়েছে, আমরা এক ধরণের গভীরতার প্রথম গাছের ট্র্যাভারসালগুলিতে N-th প্রজন্ম পর্যন্ত এবং সমস্ত শিশুকে উত্পন্ন করি। আমরা মানগুলি কেবলমাত্র N-th প্রজন্ম থেকে মুদ্রণ করি। যখন এন-থ্রি প্রজন্ম পুরোপুরি উত্পন্ন হয়েছে, সঞ্চিত মানগুলি আসলে প্রজন্মের 2 থেকে (এন + 1) জন্য শুরু মান হয়, তাই আমরা বাম দিকে একটি 2 যুক্ত করি এবং আবার শুরু করি, এবার (এন + 1) উত্পন্ন করছে ) - প্রজন্ম।

সুতরাং, একটি রূপরেখা: দৃশ্য এক্স: আমরা যখন এখানে পৌঁছেছি, এটি একটি নতুন ট্র্যাভারসাল শুরু। দুষ্টু ছেলে == 0। আমরা zeroচ্ছিকভাবে শূন্যটিকে পকের স্ট্যাকের দিকে ঠেলে দিচ্ছি এবং পাক = 2 সেট করলাম। দৃশ্য এল: যদি ফোর্ড == 0 হয় তবে আমরা মুদ্রণ প্রজন্মে পৌঁছেছি। যদি তা না হয় তবে মুদ্রণের জন্য, পকের মানটি যদি 2 যোগ করে থাকে তবে 2 টি সরিয়ে দুটি বার মুদ্রণ করুন; যদি তা না হয় তবে একবার মুদ্রণ করুন। দৃশ্য এম: এটি এমন একটি লুপ যেখানে আমরা বারবার পকের মান টগল করি এবং ক্রমটির মধ্য দিয়ে ফিরে যাই। আমরা শেষ পর্যন্ত পৌঁছানো পর্যন্ত পুনরাবৃত্তি করি (পাক == 0), যার ক্ষেত্রে আমরা এক্স, অথবা আমরা এমন একটি মান পৌঁছাতে চাই যা অন্য সন্তানের প্রয়োজন (পাক> 2), যার ক্ষেত্রে অতিরিক্ত 2 বিয়োগ করে ভি। দৃশ্যে এগিয়ে যেতে হবে ভি: এখানে আমরা এগিয়ে যান। পাক যদি 2 বা 4 হয় তবে পরবর্তী প্রজন্মের বর্তমান পিতামাতার দুটি সন্তান থাকবে, সুতরাং ফোর্ড + = 2। অনুক্রমের মাধ্যমে এগিয়ে পদক্ষেপ। সমাপ্তির জন্য চেক করতে লোগো এল।


1

axo , 13 বাইট

[:|[1+{#;1;-_

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

ব্যাখ্যা

এটি আমার Wumpus উত্তরে বিকল্প সমাধানের বন্দর হিসাবে শুরু হয়েছিল :

2%)[=]&=[O00.

এটি 18 বাইট ফলাফল। অ্যাকো যেভাবে কাজ করে তার সাথে এটি আরও সামঞ্জস্য করতে আমি উপরে 13 টি বাইটগুলি দেখে গল্ফ করে শেষ করেছি। এই 13-বাইট সংস্করণটি উন্নতিটিকে অনুপ্রেরণা দিয়ে শেষ করে উম্পাসের 11 বাইটে নামিয়েছে, সুতরাং এখন এটি সংস্করণের নিকটেই রয়েছে to

উইম্পাসের মতো, পুনরাবৃত্তির i তে , স্ট্যাকের নীচের অংশটি একটি (i) -1 ধারণ করে এবং শীর্ষটি i ম রানের প্রথম উপাদানটি ধারণ করে , তবে আমরা মুদ্রণ ব্যতীত 0 এবং 1 এর সাথে কাজ করছি ।

[:    Store a copy of the top of the stack in register A.
|     Pull up a(i)-1 from the bottom of the stack.
[1+{  Print a(i).
#;    If a(i)-1 is 1, push the value in register A.
1;-   Push another copy of that value and subtract it from 1 to swap
      0 and 1 for the next run.
_     Jump back to the beginning of the program.

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