1, 2, 4, 8, 16,… 33?


24

চ্যালেঞ্জ

একটি ফাংশন / প্রোগ্রাম লিখুন যা সুপরিচিত সংখ্যা ক্রমিকায় n'তম উপাদান বা প্রথম nউপাদানগুলির ফলাফল দেয়:

         1, 2, 4, 8, 16 ...

ওহ, অপেক্ষা করুন ... আমি প্রথম কয়েকটি সংখ্যা ভুলে গেছি:

1, 1, 1, 1, 2, 4, 8, 16 ...

হেক, আমি ভাল পরিমাপের জন্য আরও কয়েকটি যুক্ত করব:

1, 1, 1, 1, 2, 4, 8, 16, 33, 69, 146, 312, 673, 1463, 3202, 7050, 15605, 34705 ...

সংখ্যাগুলি (শূন্য-সূচকযুক্ত) সূত্র দ্বারা প্রদত্ত সাধারণ কাতালান সংখ্যা:

a(n+1)=a(n)+k=2n1a(k)a(n1k)

কোথায়

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

এটি OEIS A004149

আপনি যদি সিকোয়েন্সটি শূন্য করতে চান তবে বেছে নিতে পারেন- বা এক-সূচকযুক্ত। অনুক্রম অবশ্যই অবশ্যই একই হতে পারে, সুতরাং আপনার যদি সূত্রটি এক-সূচকযুক্ত করে থাকে তবে আপনাকে অবশ্যই পুনরায় লিখতে হবে।


আমি এখানে ভুল হলে আমাকে সংশোধন করুন, তবে এক-সূচক সূত্রে পরিবর্তনটি কি পরিবর্তন a(n-1-k)করতে হবে a(n-k), সঠিক?
Sumner18

উত্তর:


23

পাইথন , 51 বাইট

f=lambda n,k=2:n<3or k<n and f(k)*f(n-k-2)+f(n,k+1)

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

সূত্রটি কিছুটা সরল করে:

a(n)=k=2n1a(k)a(n2k)

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


8
অভিনন্দন 100 কে !!
স্টিভি গ্রিফিন

যেহেতু আমিও এই সমাধানটিতে স্বতন্ত্রভাবে
পৌঁছেছি

10

পার্ল 6 , 44 বাইট

{1,1,1,1,{sum @_[2..*]Z*@_[@_-4...0,0]}...*}

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

নামবিহীন কোড ব্লক যা মানগুলির একটি অলস অসীম অনুক্রমটি দেয়। এটি শর্টকাট সহ বর্ণিত হিসাবে ক্রমটি কার্যকরভাবে প্রয়োগ করে, এটি চূড়ান্ত উপাদান থেকে শুরু করে তালিকার বিপরীত হওয়া এবং 1শেষে একটি অতিরিক্ত যুক্ত করে শর্টকাটটি সহ দ্বিতীয় উপাদানটির পরে এতদূর সমস্ত উপাদানকে গুণ করে ।

ব্যাখ্যা:

{                                          }  # Anonymous code block
                                       ...*   # Create an infinite sequence
 1,1,1,1,                                     # Starting with four 1s
         {                            }       # Where each new element is:
          sum                                   # The sum of
              @_[2..*]                          # The second element onwards
                      Z*                        # Zip multiplied with
                        @_[@_-4...0  ]          # The fourth last element backwards
                                   ,0           # And 1

10

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

$ƒˆ¯Âø¨¨¨PO

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

নবম এলিমেন্টকে 0-ইনডেক্সড আউটপুট করে।

$                # push 1 and the input
 ƒ               # repeat (input+1) times
  ˆ              #  add the top of the stack (initially 1) to the global array
   ¯             #  push the global array
    Â            #  and a reversed copy of it
     ø           #  zip the two together, giving a list of pairs
      ¨¨¨        #  drop the last 3 pairs
         P       #  take the product of each pair (or 1 if the list is empty)
          O      #  take the sum of those products
                 #  after the last iteration, this is implicitly output;
                 #  otherwise, it's added to the global array by the next iteration

7

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

Xnor এর সমাধানের একটি বন্দর ।

0-ইন্ডেক্স।

f=(n,k=2)=>n<3||k<n&&f(k)*f(n+~++k)+f(n,k)

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


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

একটি দ্রুত, কম পুনরাবৃত্ত, তবে উল্লেখযোগ্যভাবে দীর্ঘ সমাধান।

0-ইন্ডেক্স।

f=(n,i,a=[p=1])=>a[n]||f(n,-~i,[...a,p+=(h=k=>k<i&&a[k]*a[i-++k]+h(k))(2)])

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



6

ওল্ফ্রাম ল্যাঙ্গুয়েজ (ম্যাথমেটিকা) , 36 বাইট

Sum[#0@i#0[#-i-1],{i,3,#-1}]/. 0->1&

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

1-ইন্ডেক্স।

2-সূচীবদ্ধ ক্রম 4 খাটো বাইট: Sum[#0@i#0[#-i],{i,#-4}]/. 0->1&এটি অনলাইন চেষ্টা করুন!


2
চিত্তাকর্ষক যে এটি অন্তর্নির্মিত চেয়ে খাটো CatalanNumber!
erfink

6

05 এ বি 1 ই , 17 13 বাইট

4Å1λ£₁λ¨Â¦¦s¦¦*O+

বিদ্যমান 05AB1E উত্তরের চেয়ে কম নয় , তবে আমি নিজের জন্য অনুশীলন হিসাবে নতুন 05AB1E সংস্করণটির পুনরাবৃত্ত কার্যকারিতা চেষ্টা করতে চেয়েছিলাম। কয়েক বাইট দ্বারা সম্ভবত গল্ফ করা যেতে পারে। সম্পাদনা করুন: এবং এটা প্রকৃতপক্ষে, এর রিকার্সিভ সংস্করণ দেখতে পারেন @Grimy নিচে এর 05AB1E উত্তর, যা 13 বাইট

এন

এন£è
£

ব্যাখ্যা:

এটি চ্যালেঞ্জের বর্ণনায় ব্যবহৃত সূত্রটি এভাবে প্রয়োগ করে:
একটি(এন)=একটি(এন-1)+ +Σ=2এন-1(একটি()একটি(এন-1-))

একটি(0)=একটি(1)=একটি(2)=একটি(3)=1

   λ               # Create a recursive environment,
    £              # to output the first (implicit) input amount of results after we're done
4Å1                # Start this recursive list with [1,1,1,1], thus a(0)=a(1)=a(2)=a(3)=1
                   # Within the recursive environment, do the following:
      λ            #  Push the list of values in the range [a(0),a(n)]
       ¨           #  Remove the last one to make the range [a(0),a(n-1)]
        Â          #  Bifurcate this list (short for Duplicate & Reverse copy)
         ¦¦        #  Remove the first two items of the reversed list,
                   #  so we'll have a list with the values in the range [a(n-3),a(0)]
           s       #  Swap to get the [a(0),a(n-1)] list again
            ¦¦     #  Remove the first two items of this list as well,
                   #  so we'll have a list with the values in the range [a(2),a(n-1)]
              *    #  Multiply the values at the same indices in both lists,
                   #  so we'll have a list with the values [a(n-3)*a(2),...,a(0)*a(n-1)]
               O   #  Take the sum of this list
               +  #  And add it to the a(n-1)'th value
                   # (afterwards the resulting list is output implicitly)

@ গ্রিমির ১৩ টি বাইট সংস্করণ ( যদি আপনি এখনও না করেন তবে তার উত্তরটিকে উজ্জীবিত করতে ভুলবেন না!):

1λ£λ1šÂ¨¨¨øPO

এন


1λèλ1šÂ¨¨¨øPO
λλ1šÂ¨¨¨øPOএকটি(0)=1

ব্যাখ্যা:


একটি(এন)=Σ=2এন-1(একটি()একটি(এন-2-))

একটি(-1)=একটি(0)=একটি(1)=একটি(2)=1

 λ             # Create a recursive environment,
  £            # to output the first (implicit) input amount of results after we're done
1              # Start this recursive list with 1, thus a(0)=1
               # Within the recursive environment, do the following:
   λ           #  Push the list of values in the range [a(0),a(n)]
    1š         #  Prepend 1 in front of this list
      Â        #  Bifurcate the list (short for Duplicate & Reverse copy)
       ¨¨¨     #  Remove (up to) the last three value in this reversed list
          ø    #  Create pairs with the list we bifurcated earlier
               #  (which will automatically remove any trailing items of the longer list)
           P   #  Get the product of each pair (which will result in 1 for an empty list)
            O  #  And sum the entire list
               # (afterwards the resulting list is output implicitly)

1
মজার বিষয় যে এটি টিওর উপর 40 সেকেন্ডে একটি (1200) সমাধান করতে পারে, অন্য সংখ্যক 100 এর চেয়ে বেশি সংখ্যার জন্য সময় বের করে ...
স্টিভি গ্রিফিন

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

@ গ্রিমি যদি আমি আমার উত্তরে আপনার পুনরাবৃত্ত সমাধানগুলি যোগ করি (অবশ্যই আপনাকে জমা দিয়ে দিচ্ছি) আপনার কি আপত্তি আছে? আমি আমার আসল উত্তরটিও ছেড়ে দেব। তবে মূল সূত্র এবং এক্সনোরের বাইট-সঞ্চয় সূত্রের মধ্যে পার্থক্যগুলি দেখে ভাল লাগছে। :)
কেভিন ক্রুইজসেন

1
অবশ্যই, ঠিক আছে!
গ্রিমি

@ স্টিওগ্রিফিন হ্যাঁ, আমি এই পুনরাবৃত্তিমূলক অসীম কার্যাবলীর গতিতেও মুগ্ধ হয়েছি। সম্ভবত এলিক্সির অন্যতম শক্তি, এবং অবশ্যই বিল্টিন অলস-লোডিংয়ের কারণে। এটি n=1000.65 সেকেন্ডের মধ্যে গণনা করে , কিন্তু যখন আমি অলস-লোডিং অক্ষম করি, এটি 60 সেকেন্ড পরে পরিবর্তিত হয়ে যায়, এমনকি এটির জন্যওn=25
কেভিন ক্রুইজসেন




2

এপিএল (ডায়ালগ প্রসারিত) , 34 বাইট এসবিসিএস

-2 ধন্যবাদ তাইজাইমা।

নামবিহীন উপসর্গ লাম্বদা।

{⍵≤3:1⋄+/(∇⍵-1),⍵(-×⍥∇¯2+⊢)¨4…⍵}

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


@ ডিজাইমা ধন্যবাদ টিএফডব্লু কেউ আমার ভাষা আমার চেয়ে আরও ভাল জানেন :-)
এডম

2

জাপট , 19 17 16 বাইট

দশম আউটপুট n, 1-ইনডেক্সড।

@Zí*Zz2)Ťx}g4Æ1

চেষ্টা করে দেখুন

@Zí*Zz2)Ťx}g4Æ1     :Implicit input of integer U
@                    :Function taking an array as an argument via parameter Z
 Zí                  :  Interleave Z with
    Zz2              :  Z rotated clockwise by 180 degrees (simply reversing would be a bye shorter but would modify the original array)
   *                 :  Reduce each pair by multiplcation
       )             :  End interleave
        Å            :  Slice off the first element
         ¤           :  Slice off the first 2 elements
          x          :  Reduce by addition
           }         :End function
            g        :Pass the following as Z, push the result back to it and repeat until it has length U
             4Æ1     :Map the range [0,4) to 1s
                     :Implicit output of the last element

1

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

f a|a<4=1|z<-g[2..a]=sum$zipWith(*)z$reverse(1:g[0..a-4])
g=map f

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

আপনি fকোনও সিকোয়েন্সের একটি একক উপাদান পেতে, বা মানগুলির একটি তালিকা পাস gএবং সেই তালিকার জন্য সমস্ত সূচী পেতে ব্যবহার করতে পারেন।


1

ফোর্থ (গফার্থ) , 99 81 বাইট

: f recursive dup 4 > if 0 over 3 do over 1- i - f i f * + loop else 1 then nip ;

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

আউটপুট নবম পদ এবং ইনপুটটি 1-সূচকযুক্ত

সম্পাদনা করুন: এক্সনোর সূত্রে স্যুইচ করে 17 বাইট সংরক্ষণ করা হয়েছে। 1-ইনডেক্স ব্যবহার করে আরও 1 বাইট সংরক্ষণ করা হয়েছে

কোড ব্যাখ্যা

: f                     \ start a new word definition
  recursive             \ mark that this word will be recursive
  dup 4 >               \ duplicate the input and check if it is greater than 4
  if                    \ if it is:
    0 over              \ create an accumulator and copy n to top of stack
    3 do                \ start counted loop from 3 to n-1
      over 1- i - f     \ recursively calculate f(n-1-i)
      i f               \ recursively calculate f(i)
      * +               \ multiply results and add to accumulator
    loop                \ end the counted loop        
  else                  \ otherwise, if n < 5
    1                   \ put 1 on the stack
  then                  \ end the if block
  nip                   \ drop n from the stack
;                       \ end the word definition

1

কাঠকয়লা , 26 বাইট

F⁵⊞υ¹FN⊞υΣ✂E⮌υ×κ§υλ³→I§υ±⁴

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। 0-সূচকযুক্ত নবম সংখ্যাটি মুদ্রণ করে, যদিও এটি অভ্যন্তরীণভাবে 1-সূচি ব্যবহার করে গণনা করে। ব্যাখ্যা:

F⁵⊞υ¹

দিয়ে শুরু a[0] = a[1] = a[2] = a[3] = a[4] = 1। হ্যাঁ, এটি 1-সূচকযুক্ত তবে অতিরিক্ত জিরোথ মান সহ। এটি আপনার জন্য কোড গল্ফ।

FN

একটি অতিরিক্ত nশর্ত গণনা করুন । এটি ওভারকিল, তবে এটি কখন পছন্দসই শব্দটি সন্ধান করে n<5

⊞υΣ✂E⮌υ×κ§υλ³

প্রতিটি টার্মের জন্য, পরের পদটি তিনটি পদ বাদ দিয়ে শর্তাদির বিপরীত দ্বারা এতদিনের মেয়াদী গুণফলের যোগফল হিসাবে গণনা করুন।

Sliceচারকোলকে 2-যুক্তি ফর্মটি পার্স করার জন্য এটি কোনও অপশন ব্যবহৃত হয়, অন্যথায় আমাকে তিনটি পদ সরিয়ে নেওয়ার জন্য কম গোলাপী উপায় ব্যবহার করতে হবে।

I§υ±⁴

চতুর্থ শেষ পদের আউটপুট।




1

অক্টাভা , 73 বাইট

g=(1:4).^0;for(i=3:(n=input('')))g(i+2)=g(4:i+1)*g(i-(2:i-1))';end;g(end)

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

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

অক্টাভা , 75 বাইট

f(f=@(a)@(n){@()sum(arrayfun(@(k)a(a)(k)*a(a)(n-2-k),2:n-1)),1}{2-(n>3)}())

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

ক্যাপচা এটি পোস্ট করার সময় আমি একজন মানুষ কিনা তা যাচাই করতে চেয়েছিলেন। সৎ হবে, আমি তাই নিশ্চিত নই


লুপের পদ্ধতির সংক্ষিপ্ত করার কোনও সুস্পষ্ট উপায় আমি দেখতে পাচ্ছি না ... এটি দেখতে বেশ সুন্দর দেখাচ্ছে! এছাড়াও, আমি প্রায়শই অক্টোবায় শূন্য-ভিত্তিক সূচী দেখতে পাই না :)
স্টিভি গ্রিফিন

পুনরাবৃত্তির যেহেতু @StewieGriffin কিছু অফসেট এটা না হয়েছে সত্যিই যদি তোমরা zero- বাছাই অথবা এক ইন্ডেক্স ব্যাপার। আমার মনে হয় আমি 2-ইনডেক্সিং করাতে কিছু বাইট শেভ করতে পারলাম, তবে মনে হয়েছে প্রতারণার মতো। যাইহোক, আপনার স্বজ্ঞাততা সঠিক ছিল - কোনওভাবে, এটি একটি বেনামে পুনরাবৃত্তির উপায়ে প্রকৃতপক্ষে খাটো ছিল। আমি মনে করি মূল সুবিধাটি হ'ল এটি চারটি প্রাথমিক মানটি খুব ভালভাবে তৈরি করা পরিচালনা করে কারণ এটি কেবল 1 এর জন্য ফেরত দেয় n<4
সানচিইস

1
@ স্টেভিগ্রিফিন অবশ্যই, পুরাতন ম্যাট্রিক্সের গুণ। সাবাশ!
সানচিইস


0

সি / সি ++ , 70 69 67 বাইট

-1 বাইট জনাথন ধন্যবাদ।

int a(int n){int k=2,s=0;while(++k<n)s+=a(k)*a(n+~k);return s?s:1;}

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


ক্যান a(n-1-k) পারে a(n+~k)?
জোনাথন ফ্রেচ

@ জোনাথান ফ্রেচ এমনকি a(++k)*a(n-k) কাজ করার সম্ভাবনা রয়েছে এবং এটি আরও 2 বাইট বাদ পড়েছে for। তবে আমি অপরিশোধিত আচরণের গন্ধ পাচ্ছি।
polfosol ఠ_ఠ

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