এন-বোনাকি ক্রম প্রিন্ট করুন


54

এটি খুব বেশি পরিচিত নয়, তবে যাকে আমরা ফিবোনাচি সিকোয়েন্স, একেএ বলি

1, 1, 2, 3, 5, 8, 13, 21, 34...

আসলে ডুওনাচি সিকোয়েন্স বলা হয় called এটি কারণ পরবর্তী নম্বর পেতে, আপনি আগের 2 নম্বর যোগফল। রয়েছে Tribonacci ক্রম,

1, 1, 1, 3, 5, 9, 17, 31, 57, 105, 193, 355, 653, 1201...

কারণ পরবর্তী সংখ্যাটি পূর্ববর্তী 3 সংখ্যার যোগফল। এবং কোয়াড্রোনসি ক্রম

1, 1, 1, 1, 4, 7, 13, 25, 49, 94, 181, 349, 673...

এবং প্রত্যেকের প্রিয়, পেন্টানাচি ক্রম:

1, 1, 1, 1, 1, 5, 9, 17, 33, 65, 129...

এবং হেক্সানাচি সিকোয়েন্স, সেপ্টানাচি সিকোয়েন্স, অক্টোনাক্সি সিকোয়েন্স এবং আরও অনেক কিছু N-Bonacci ক্রম পর্যন্ত রয়েছে।

N-Bonacci ক্রমটি সর্বদা N 1s দিয়ে একটানা শুরু হবে ।

চ্যালেঞ্জ

আপনাকে অবশ্যই এমন একটি ফাংশন বা প্রোগ্রাম লিখতে হবে যাতে দুটি সংখ্যা এন এবং এক্স হয় , এবং প্রথম এক্স এন-বোনাচি নম্বর প্রিন্ট করে । N পুরো সংখ্যাটি 0 এর চেয়ে বড় হবে এবং আপনি নিরাপদে ধরে নিতে পারবেন না যে কোনও N-Bonacci নম্বরগুলি আপনার ভাষার ডিফল্ট নম্বর প্রকারের চেয়ে বেশি হবে। আউটপুটটি যে কোনও মানব পাঠযোগ্য বিন্যাসে হতে পারে এবং আপনি কোনও যুক্তিসঙ্গত পদ্ধতিতে ইনপুট নিতে পারেন। (কমান্ড লাইন আর্গুমেন্ট, ফাংশন আর্গুমেন্ট, STDIN, ইত্যাদি)

যথারীতি, এটি কোড-গল্ফ, সুতরাং মানক লুফোলগুলি প্রয়োগ হয় এবং বাইটের মধ্যে সংক্ষিপ্ত উত্তর!

নমুনা IO

#n,  x,     output
 3,  8  --> 1, 1, 1, 3, 5, 9, 17, 31
 7,  13 --> 1, 1, 1, 1, 1, 1, 1, 7, 13, 25, 49, 97, 193
 1,  20 --> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
 30, 4  --> 1, 1, 1, 1       //Since the first 30 are all 1's
 5,  11 --> 1, 1, 1, 1, 1, 5, 9, 17, 33, 65, 129

1
মানুষ, আমি কিছুক্ষণ আগে এই ধারণা পেয়েছিলাম এবং এটি লেখার কাছাকাছি না।
মরগান থ্রাপ

9
আমার ভোটের বোতাম == আপনার অবতার
ETH প্রোডাকশনগুলি

3-বোনাকি 1, 1, 2, 4, 7তৃতীয় অবস্থান হিসাবে হবে না 0 + 1 + 1? ... এবং তাই অন্যদের সাথে এক?
ছাতা

1
@ হাম্বল্লা না, ট্রাইবোনাকি 3 1 এস দিয়ে শুরু হয়। এই বিষয়টি স্পষ্ট করতে আমার সম্পাদনা দেখুন।
DJMcMayhem

উত্তর:


23

বুলফাক, 6 বাইট

,,[;+]

আপনি নিরাপদে ধরে নিতে পারবেন কোনও এন-বোনাচি নম্বরগুলি আপনার ভাষার ডিফল্ট নম্বর প্রকারের বেশি হবে না।

বুলফাকের ডিফল্ট নম্বর প্রকারটি কিছুটা। ধরে নিলে এটি এন এবং এক্স ইনপুট নম্বরগুলিতেও প্রসারিত এবং এন> 0 দেওয়া মাত্র দুটি সম্ভাব্য ইনপুট রয়েছে - 10 (যা কিছু না করে) এবং ১১ (যা আউটপুট ১)।

,বর্তমান মেমরি অবস্থানটিতে কিছুটা পড়ে। এন অবশ্যই এটি ১ হিসাবে হওয়া উচিত []তাই এড়িয়ে চলে X এক্স যদি 0 হয় তবে লুপ বডি (চারপাশে ) এড়িয়ে যায়। এক্সটি যদি 1 হয় তবে এটি আউটপুট হয় এবং তারপরে 0 এ উল্টে যায় যাতে লুপটি পুনরায় হয় না।


4
ঠিক এর মতো কোনও স্ট্যান্ডার্ড লুফোল নেই?
স্টান স্ট্রাম

1
@ স্ট্যানস্ট্রাম এই উত্তরের আগে বা পরে?
ব্যবহারকারী 253751

2
আমি বিশ্বাস করি এটি আগে এসেছিল, আমাকে এটি পরীক্ষা করে দেখা যাক ... মেটা লিংক ; প্রথম পুনর্বিবেচনা ছিল 31 জানুয়ারী, 2016 এ 13:44 এ। বাহ, কিছুই নয়! আমার দু'দিন ছুটি ছিল। যদিও, জেদী হতে, এর জন্য সর্বশেষ সম্পাদনাটি ছিল 31 জানুয়ারী, 2016, 16:06 এ। সুওহু হ্যাঁ, আমার বইতে এটি ঠিক আছে
স্ট্যান স্ট্রাম


8

পাইথ, 13

<Qu+Gs>QGEm1Q

পরীক্ষা স্যুট

ইনপুট নিউলাইনটিকে nপ্রথমে পৃথক করে ।

ব্যাখ্যা:

<Qu+Gs>QGEm1Q  ##  implicit: Q = eval(input)
  u      Em1Q  ##  read a line of input, and reduce that many times starting with
               ##  Q 1s in a list, with a lambda G,H
               ##  where G is the old value and H is the new one
   +G          ##  append to the old value
     s>QG      ##  the sum of the last Q values of the old value
<Q             ##  discard the last Q values of this list

1
বাহ, দ্রুত ছিল। আপনি ইতিমধ্যে এটি পোস্ট করার আগে আমার ব্রাউজারটি বন্ধ করার সময় ছিল না!
ডিজেএমসিএমহেম

5

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

g l=sum l:g(sum l:init l)
n#x|i<-1<$[1..n]=take x$i++g i

ব্যবহারের উদাহরণ: 3 # 8-> [1,1,1,3,5,9,17,31]

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

i<-1<$[1..n]           -- bind i to n copies of 1
take x                 -- take the first x elements of
       i++g i          -- the list starting with i followed by (g i), which is
sum l:                 -- the sum of it's argument followed by
      g(sum l:init l)  -- a recursive call to itself with the the first element
                       -- of the argument list replaced by the sum

তার tail lপরিবর্তে হওয়া উচিত নয় init l?
গর্বিত হাস্কেলর

@ প্রফেসহেস্কিলার: এতে কিছু যায় আসে না। আমরা তালিকার শেষ nউপাদানগুলি রাখি । প্রান্ত থেকে অপসারণ এবং সামনের দিকে এবং অন্যান্য উপায়ে যোগ করার মধ্যে কোনও পার্থক্য নেই, যেমন সামনে থেকে সরানো এবং শেষের দিকে যুক্ত করা, কারণ প্রাথমিক তালিকাটি কেবলমাত্র এসকে নিয়ে গঠিত 1
নিমি

ওহ আমি এটা বুঝতে পেরেছি. যে প্রতিস্থাপন করতে একটি ছিমছাম উপায় ++[]দ্বারা :!
গর্বিত হাস্কেলর 21

@ প্রফেসহেস্কিলার: হ্যাঁ, ঠিক!
নিমি

5

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

def f(x,n):l=[1]*n;exec"print l[0];l=l[1:]+[sum(l)];"*x

nতালিকায় ক্রমটির একটি দৈর্ঘ্য উইন্ডো সন্ধান করে l, যোগফল যোগ করে এবং প্রথম উপাদানটি সরিয়ে আপডেট করা হয়। পুনরাবৃত্তির জন্য প্রতিটি উপাদানকে প্রথম উপাদান মুদ্রণ করে x

সমস্ত উপাদান সংরক্ষণ এবং সর্বশেষ nমানগুলির সংমিশ্রণের একটি পৃথক পদ্ধতি একই দৈর্ঘ্য দিয়েছে (55)।

def f(x,n):l=[1]*n;exec"l+=sum(l[-n:]),;"*x;print l[:x]

5

জাভাস্ক্রিপ্ট ES6 / ES2015, 107 97 85 80 বাইট

কিছুটা বাইট সংরক্ষণ করার জন্য @ ব্যবহারকারী 81655, @ নিল এবং @ETH প্রোডাকশনগুলিকে ধন্যবাদ


(i,n)=>eval("for(l=Array(i).fill(1);n-->i;)l.push(eval(l.slice(-i).join`+`));l")

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


পরীক্ষার কেস:

console.log(f(3,  8))// 1, 1, 1, 3, 5, 9, 17, 31
console.log(f(7,  13))// 1, 1, 1, 1, 1, 1, 1, 7, 13, 25, 49, 97, 193
console.log(f(5,  11))// 1, 1, 1, 1, 1, 5, 9, 17, 33, 65, 129

1
খুশী হলাম। Golfing কয়েকটি পরামর্শ দেওয়া: forসবসময় বেশী ভালো while, x.split('')-> [...x], ~~a-> +a, n-=1-> n--যদি আপনি একটি সমগ্র ফাংশন বডির ঘিরা evalআপনি লিখতে প্রয়োজন হবে না return। এছাড়াও, চেয়ে আরও খাটো [...'1'.repeat(i)]হয় Array(i).fill(1)এবং আপনি অপসারণ করতে পারেন ~~থেকে aএবং b। এবং আপনাকে অপসারণের অনুমতি দেওয়া হচ্ছে f=
ব্যবহারকারী81655

2
এই আমার টিপস (85 বাইট) সঙ্গে দেখতে এরকম হয়: (i,n)=>eval("for(l=Array(i).fill(1);n-->i;)l.push(l.slice(-i).reduce((a,b)=>a+b));l")। আমি বিবৃতি ক্রম পরিবর্তন করে মিলিত n--মধ্যে n-iএবং সরানো lকিছু অতিরিক্ত বাইট সংরক্ষণ করতে আর্গুমেন্ট থেকে।
ব্যবহারকারী81655

1
@ user81655 আমি সঞ্চয়টি পাই না eval; (i,n)=>{for(l=Array(i).fill(1);n-->i;)l.push(l.slice(-i).reduce((a,b)=>a+b));return l}এখনও 85 বাইট হয়।
নীল

@ নীল আমার কাছে 86 বাইটের মতো দেখাচ্ছে ...
ব্যবহারকারী 81655

3
l.slice(-i).reduce((a,b)=>a+b)=>eval(l.slice(-i).join`+`)
ETH প্রোডাকশনগুলি

4

ES6, 66 বাইট

(i,n)=>[...Array(n)].map((_,j,a)=>a[j]=j<i?1:j-i?s+=s-a[j+~i]:s=i)

দুর্ভাগ্যক্রমে mapআপনাকে কলব্যাকের ফলাফল অ্যারে অ্যাক্সেস করতে দেবে না।


1
পরামিতিগুলি কারি করে একটি বাইট সংরক্ষণ করুন।
শেগি

4

জেলি, 12 বাইট

ḣ³S;
b1Ç⁴¡Uḣ

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

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

b1Ç⁴¡Uḣ  Main link. Left input: n. Right input: x.

b1       Convert n to base 1.
    ¡    Call...
  Ç        the helper link...
   ⁴       x times.
     U   Reverse the resulting array.
      ḣ  Take its first x elements.


ḣ³S;     Helper link. Argument: A (list)

ḣ³       Take the first n elements of A.
  S      Compute their sum.
   ;     Prepend the sum to A.

3

সি ++ 11, 360 বাইট

হাই আমি এই প্রশ্নটি পছন্দ করি। আমি জানি এই প্রতিযোগিতাটি জিততে সি ++ একটি খুব শক্ত ভাষা hard তবে আমি কোনওভাবেই একটি পয়সা নিক্ষেপ করব।

#include<vector>
#include<numeric>
#include<iostream>
using namespace std;typedef vector<int>v;void p(v& i) {for(auto&v:i)cout<<v<<" ";cout<<endl;}v b(int s,int n){v r(n<s?n:s,1);r.reserve(n);for(auto i=r.begin();r.size()<n;i++){r.push_back(accumulate(i,i+s,0));}return r;}int main(int c, char** a){if(c<3)return 1;v s=b(atoi(a[1]),atoi(a[2]));p(s);return 0;}

আমি উপরের কোডটির পঠনযোগ্য ব্যাখ্যা হিসাবে এটি ছেড়ে দেব।

#include <vector>
#include <numeric>
#include <iostream>

using namespace std;
typedef vector<int> vi;

void p(const vi& in) {
    for (auto& v : in )
        cout << v << " ";
    cout << endl;
}

vi bonacci(int se, int n) {
    vi s(n < se? n : se, 1);
    s.reserve(n);
    for (auto it = s.begin(); s.size() < n; it++){
        s.push_back(accumulate(it, it + se, 0));
    }
    return s;
}

int main (int c, char** v) {
    if (c < 3) return 1;
    vi s = bonacci(atoi(v[1]), atoi(v[2]));
    p(s);
    return 0;
}

প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম। এটি একটি ভাল উত্তর, তবে আমি লক্ষ্য করেছি যে আপনার কাছে প্রচুর শ্বেতস্পেস এবং ভেরিয়েবল এবং ফাংশন নাম রয়েছে যা 1 অক্ষরের চেয়ে দীর্ঘ longer যেমনটি দাঁড়িয়েছে, এটি আপনার কোডের একটি ভাল পঠনযোগ্য সংস্করণ , তবে আপনার গল্ফযুক্ত সংস্করণ যুক্ত করা উচিত। আপনি যখন করবেন, আমি আপনাকে একটি উত্সাহ দেব, কিন্তু এটি গল্ফ না হওয়া পর্যন্ত আমি করব না।
wizzwizz4

@ wizzwizz4 হাই, উপরের কোডটির একটি গল্ফ সংস্করণ যুক্ত করা হয়েছে। আমি কীভাবে এটি করেছি তা লোকেরা যাতে দেখতে দেয় সেজন্য আমি চারপাশের অবরুদ্ধ কোডটি রেখে দিয়েছি। তদুপরি আমি এমন একটি ফাংশন বোনাসি পড়তে চাই যা vi প্রদান করে যা এখনও ভাইবোনাকির মতো শোনাচ্ছে। আমি মনে করি যে আমার মূল ফাংশনটি খাটো করা উচিত নয় কারণ স্ট্যান্ডার্ড ম্যান্ডেটগুলি প্রোগ্রামের এন্ট্রি পয়েন্ট হিসাবে ইন্ট মেইন (ইনট, চর **) ব্যবহার করে। আরও আমি বিশ্বাস করি যে সমস্ত ভেরিয়েবল সর্বাধিক 1 অক্ষর দীর্ঘ এবং সমস্ত অ-উল্লেখযোগ্য শ্বেতস্থান অপসারণ করা হয়েছে।
hetepeperfan

3
এটি কোড নয় - "মানদণ্ডগুলি মেনে চলুন"। এটি কোড-গল্ফ । আমরা কৌশলগুলি ব্যবহার করি এবং আমাদের ভাষাগুলির সুবিধা গ্রহণ করি। যদি কোনও ভেরিয়েবল হয় তবে তা intমুছে দিন int। যদি কোন ফাংশন বলা হয় foo, তাদের কল করুন f। নিষ্ঠুর হতে হবে; মানটিকে উপেক্ষা করুন এবং সংকলকটি শোষণ করুন। আপনি গল্ফ এইভাবে।
wizzwizz4

পাংস এবং সুন্দর কোড কেবল অলগল্ড কোডের অন্তর্ভুক্ত । তবে এগুলি সেখানে নির্দ্বিধায় রাখুন; আসলে, এটি সুপারিশ করা হয়। আপনি যখন আপনার কোডটি গল্ফ করেন তখন সত্যই সংকলককে সত্যই বুঝান। যাই হোক না কেন এটি যতটা সম্ভব ছোট পান । (ওহ, এবং এখানে +1 আমি প্রতিশ্রুতি দিয়েছি!)
wizzwizz4

@ wizzwizz4 "ইনট" অপসারণ বৈধ? আমি ভেবেছিলাম নিহিত ইনটি চালানো হবে না।
DJMcMayhem

3

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

q(h:t)=h:q(t++[h+sum t])
n?x=take x$q$1<$[1..n]

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

<$ এই চ্যালেঞ্জ পোস্ট হওয়ার পরে প্রিলিডের মধ্যে উপস্থিত হতে পারে।


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

n%i|i>n=sum$map(n%)[i-n..i-1]|0<1=1
n?x=map(n%)[1..x]

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

বাইনারি ফাংশন সংজ্ঞায়িত করে ?, যেমন ব্যবহৃত হয় 3?8 == [1,1,1,3,5,9,17,31]

সহায়ক ফাংশনটি পূর্বোক্ত মানগুলি যোগ করে পুনরুত্থিতভাবে -Bonacci অনুক্রমের তম উপাদানটি %সন্ধান করে । তারপরে, ফাংশনটি প্রথম মানগুলির ট্যাবলেট করে ।inn?x%


পুরানো উত্তর, তবে আপনার অর্থ "সহায়ক ফাংশন %"?
কনর ও'ব্রায়েন

রক্ষীদের স্যুইচিংয়ে পরিণত i<=nহবে i>n
janrjan জোহানসেন

@ আরজান জোহেনসেন আমি লক্ষ্য করেছি যে সম্পাদনা করার সময়ও, যদিও পুরো পদ্ধতিটি ফিরে দেখলে খারাপ মনে হয়, তাই আমি কেবল পুরো গল্ফটি পুনরায় করতে পারি।
xnor

2

এপিএল, 21

{⍵↑⍺{⍵,+/⍺↑⌽⍵}⍣⍵+⍺/1}

এটি এমন একটি ফাংশন যা তার বাম আর্গুমেন্ট হিসাবে এন এবং ডান আর্গুমেন্ট হিসাবে x গ্রহণ করে।

ব্যাখ্যা:

{⍵↑⍺{⍵,+/⍺↑⌽⍵}⍣⍵+⍺/1}
                   ⍺/1  ⍝ begin state: X ones    
                  +     ⍝ identity function (to separate it from the ⍵)
    ⍺{         }⍣⍵     ⍝ apply this function N times to it with X as left argument
      ⍵,               ⍝ result of the previous iteration, followed by...
        +/              ⍝ the sum of
          ⍺↑            ⍝ the first X of
            ⌽          ⍝ the reverse of
             ⍵         ⍝ the previous iteration
 ⍵↑                    ⍝ take the first X numbers of the result

পরীক্ষার কেস:

      ↑⍕¨ {⍵↑⍺{⍵,+/⍺↑⌽⍵}⍣⍵+⍺/1} /¨ (3 8)(7 13)(1 20)(30 4)(5 11)
 1 1 1 3 5 9 17 31                       
 1 1 1 1 1 1 1 7 13 25 49 97 193         
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
 1 1 1 1                                 
 1 1 1 1 1 5 9 17 33 65 129              

2

পাইথন 3, 59

FryAmTheEggman ধন্যবাদ 20 বাইট সংরক্ষণ করা।

দুর্দান্ত সমাধান নয়, তবে এটি আপাতত কাজ করবে।

def r(n,x):f=[1]*n;exec('f+=[sum(f[-n:])];'*x);return f[:x]

এছাড়াও, এখানে পরীক্ষার কেসগুলি রয়েছে:

assert r(3, 8) == [1, 1, 1, 3, 5, 9, 17, 31]
assert r(7, 13) == [1, 1, 1, 1, 1, 1, 1, 7, 13, 25, 49, 97, 193]
assert r(30, 4) == [1, 1, 1, 1]

2

জাভা, 82 + 58 = 140 বাইট

ফাংশন এটি ith এন -bonacci নম্বর ( 82 বাইট ):

int f(int i,int n){if(i<=n)return 1;int s=0,q=0;while(q++<n)s+=f(i-q,n);return s;}

ফাংশন প্রথম প্রিন্ট করতে এন -bonacci নম্বর ( 58 বাইট ):

(k,n)->{for(int i=0;i<k;i++){System.out.println(f(i,n));}}

2

ব্রেন-ফ্লাক , 144 124 122 বাইট

-20 বাইট ধন্যবাদ নাইট্রোডেনকে

এটি আমার প্রথম ব্রেইন-ফ্লাক উত্তর, এবং আমি নিশ্চিত যে এটি আরও উন্নত হতে পারে। কোন সাহায্য প্রশংসা করা হয়।

(([{}]<>)<{({}(()))}{}>)<>{({}[()]<<>({<({}<({}<>)<>>())>[()]}{})({}<><({({}<>)<>}<>)>)<>>)}{}<>{({}<{}>())}{}{({}<>)<>}<>

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



1

জুলিয়া, 78 বাইট

f(n,x)=(z=ones(Int,n);while endof(z)<x push!(z,sum(z[end-n+1:end]))end;z[1:x])

এটি এমন একটি ফাংশন যা দুটি পূর্ণসংখ্যা গ্রহণ করে এবং পূর্ণসংখ্যার অ্যারে প্রদান করে। পদ্ধতিটি সহজ: দৈর্ঘ্যের একটি অ্যারে তৈরি করুন n, তারপরে nঅ্যারের দৈর্ঘ্য না হওয়া পর্যন্ত পূর্ববর্তী উপাদানগুলির যোগফল যোগ করে অ্যারে বাড়ান x

Ungolfed:

function f(n, x)
    z = ones(Int, n)
    while endof(z) < x
        push!(z, sum(z[end-n+1:end]))
    end
    return z[1:x]
end

1

এমএটিএল , 22 26 বাইট

1tiXIX"i:XK"tPI:)sh]K)

এটি ভাষা / সংকলকের বর্তমান প্রকাশ (10.2.1) ব্যবহার করে।

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

কয়েকটি অতিরিক্ত বাইট :-( Gফাংশনে একটি বাগের কারণে (পেস্ট ইনপুট; এখন পরবর্তী প্রকাশের জন্য সংশোধন করা হয়েছে)

ব্যাখ্যা

1tiXIX"      % input N. Copy to clipboard I. Build row array of N ones
i:XK         % input X. Build row array [1,2,...X]. Copy to clipboard I
"            % for loop: repeat X times. Consumes array [1,2,...X]
  t          % duplicate (initially array of N ones)
  PI:)       % flip array and take first N elements
  sh         % compute sum and append to array
]            % end
K)           % take the first X elements of array. Implicitly display

1

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

->\N,\X{({@_[*-N..*].sum||1}...*)[^X]} # 38 bytes
-> \N, \X {
  (

    {

      @_[
        *-N .. * # previous N values
      ].sum      # added together

      ||     # if that produces 0 or an error
      1      # return 1

    } ... *  # produce an infinite list of such values

  )[^X]      # return the first X values produced
}

ব্যবহার:

# give it a lexical name
my &n-bonacci = >\N,\X{…}

for ( (3,8), (7,13), (1,20), (30,4), (5,11), ) {
  say n-bonacci |@_
}
(1 1 1 3 5 9 17 31)
(1 1 1 1 1 1 1 7 13 25 49 97 193)
(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
(1 1 1 1)
(1 1 1 1 1 5 9 17 33 65 129)

1

সি, 132 বাইট

পুনরাবৃত্তির পদ্ধতি কয়েক বাইট দ্বারা সংক্ষিপ্ত হয়।

k,n;f(i,s,j){for(j=s=0;j<i&j++<n;)s+=f(i-j);return i<n?1:s;}main(_,v)int**v;{for(n=atoi(v[1]);k++<atoi(v[2]);)printf("%d ",f(k-1));}

Ungolfed

k,n; /* loop index, n */

f(i,s,j) /* recursive function */
{
    for(j=s=0;j<i && j++<n;) /* sum previous n n-bonacci values */
        s+=f(i-j);
    return i<n?1:s; /* return either sum or n, depending on what index we're at */
}

main(_,v) int **v;
{
    for(n=atoi(v[1]);k++<atoi(v[2]);) /* print out n-bonacci numbers */
        printf("%d ", f(k-1));
}

1

কাস্তে , 9 বাইট

↑§¡ȯΣ↑_B1

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

থেকে শুরু Base- 1প্রতিনিধিত্ব এন (কেবল একটি তালিকা এন বেশী) এবং ¡teratively অঙ্কের ( Σ) গত ( ↑_) এন উপাদান এবং লিস্টে ফলাফলের appends। অবশেষে, ( ) এই তালিকার প্রথম এক্স নম্বর নেয় এবং সেগুলি প্রদান করে।





0

পার্ল 6, 52 ~ 72 47 ~ 67 বাইট

sub a($n,$x){EVAL("1,"x$n~"+*"x$n~"...*")[^$x]}

MONKEY-SEE-NO-EVALনিম্নলিখিত ত্রুটির কারণে মডিউলটি প্রয়োজন :

=== দু: খ! ===
EVAL সংকলন করার সময় ত্রুটি একটি খুব বিপজ্জনক ফাংশন !!! (ওভাররাইডের জন্য মনি-সিই-নো-এভাল ব্যবহার করুন,
তবে কেবলমাত্র যদি আপনি খুব নিশ্চিত হন যে আপনার ডেটাতে কোনও ইনজেকশন আক্রমণ নেই)
তবে -e: 1 এ

$ perl6 -MMONKEY-SEE-NO-EVAL -e'a(3,8).say;sub a($n,$x){EVAL("1,"x$n~"+*"x$n~"...*")[^$x]}'
(1 1 1 3 5 9 17 31)

কড়া মোড ইত্যাদি বন্ধ করার কোনও উপায় কি কেউ জানেন?
andlrc

আমি মনে করি আপনি যদি প্রিল-ক্রিসমাস 2015 পার্ল 6 রিলিজ ব্যবহার করেন তবে এটি বানর-দেখুন-নো-ইওল কার্যকর করে না।
ব্যাটম্যান


0

Jq 1.5 , 67 বাইট

def C:if length>X then.[:X]else.+=[.[-N:]|add]|C end;[range(N)|1]|C

এন এবং এক্স দ্বারা সরবরাহ করা ইনপুট অনুমান করে

def N: 5;
def X: 11;

সম্প্রসারিত

def C:                        # . is current array
    if length>X               # stop when array is as long as X
    then .[:X]                # return first X elements
    else .+=[.[-N:]|add] | C  # recursively add sum of last N elements to array
    end
;
  [range(N)|1]                # initial state
| C

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


0

জে, 31 বাইট

]{.(],[:+/[{.])^:(-@[`]`(1#~[))

Ungolfed:

] {. (] , [: +/ [ {. ])^:(-@[`]`(1 #~ [))

ব্যাখ্যা

পাওয়ার ক্রিয়াটির সাথে তার মজাদার আকারের মজার সময় :

(-@[`]`(1 #~ [)) NB. gerund pre-processing

বিস্তারিত ভাঙ্গন:

  • ] {. ...<right arg>এই সমস্ত উপাদান থেকে প্রথম উপাদানগুলিকে ডান দিকে নিয়ে যান যা কাজ করে ...
  • <left> ^: <right>ক্রিয়াটি <left>বারবার প্রয়োগ করুন <right>... যেখানে <right>মাঝের জেরুন্ড দ্বারা নির্দিষ্ট করা হয়েছে (-@[] (1 #~ [), অর্থাত্, ]ডান আরগটি নিজেই ফাংশনে প্রবেশ করেছে। তাহলে কী <left>? ...
  • (] , [: +/ [ {. ])এই পুরো বাক্যাংশের বাম আর্গুমেন্টটি প্রথম প্রথম গ্রাউন্ড, অর্থাৎ, দ্বারা রূপান্তরিত হয় -@[। এর অর্থ এই বাক্যাংশের বাম আর্গুমেন্টটি সামগ্রিক ফাংশনের বাম যুক্তির নেতিবাচক । এই প্রয়োজন যাতে ফ্রেজ হয় [ {. ]লাগে গত আগমন তালিকা আমরা তৈরি করছি থেকে উপাদানগুলি। ঐ তারপর সংকলিত করা হয়: +/। এবং পরিশেষে যে একই রিটার্ন লিস্টে যোগ: ] ,
  • সুতরাং কিভাবে রিটার্ন তালিকা শুরু করা হয়? তৃতীয় প্রাক-প্রসেসিং জেরুন্ড এটি সম্পাদন করে: (1 #~ [)- 1 "বাম আর্গ" বার বার করুন।

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


0

গণিত, 59 বাইট

((f@#=1)&/@Range@#;f@n_:=Tr[f[n-#]&/@Range@#];f/@Range@#2)&

আপনি সম্ভবত Clear@fফাংশন কল মধ্যে করতে চাইবেন । যুক্তিগুলি n,xযেমন পরীক্ষার কেসের মতো হয়।



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