Hofstadter কিউ-সিকোয়েন্স


25

সংজ্ঞা

  1. a (1) = 1
  2. a (2) = 1
  3. a (n) = a (না (এন -1)) + এ (না (এন -2)) এন> 2 এর জন্য যেখানে এন একটি পূর্ণসংখ্যা

কার্য

ইতিবাচক পূর্ণসংখ্যা দেওয়া হয়েছে n, উত্পন্ন করুন a(n)

Testcases

n  a(n)
1  1
2  1
3  2
4  3
5  3
6  4
7  5
8  5
9  6
10 6
11 6
12 8
13 8
14 8
15 10
16 9
17 10
18 11
19 11
20 12

উল্লেখ

  • বাধ্যতামূলক OEIS A005185


1
যে ভাষাগুলি এটি 1 হিসাবে ব্যবহার করা যেতে পারে সেখানে আমরা কি সত্যকে ফিরিয়ে দিতে পারি ?
ডেনিস

1
@ ডেনিস যদি সেই ভাষায় সত্য 1 এর সমান হয় তবে হ্যাঁ।
লিকি নুন

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

উত্তর:


9

রেটিনা , 84 83 79 74 বাইট

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

.+
$*;1¶1¶
+`;(?=(1)+¶(1)+)(?=(?<-1>(1+)¶)+)(?=(?<-2>(1+)¶)+)
$3$4¶
G3=`
1

এটি অনলাইন চেষ্টা করুন! (প্রথম লাইন একটি লাইনফিড-বিচ্ছিন্ন পরীক্ষা স্যুট সক্ষম করে))

আমি আরও কিছু পরে এই গল্ফ করতে হবে।


9

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

a n|n<3=1|b<-a.(-)n=b(b 1)+b(b 2)

একটি ফাংশন সংজ্ঞা দেয় a


2
বাঁধার সাথে দুর্দান্ত কৌশল! (b.b)1+(b.b)2যোগফলের চেয়ে ছোট কিছু হবে না ?
xnor

হ্যাঁ, ধন্যবাদ @ এক্সনর
অ্যান্ডারস ক্যাসরগ

8

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

!n=n<3||!(n-!~-n)+!(n-!~-~-n)

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

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

আমরা অ্যানারি অপারেটরের নতুন সংজ্ঞা দিই ! আমাদের উদ্দেশ্যে ।

তাহলে এন হয় 1 বা 2 , n<3ফেরৎ সত্য এবং এই আমাদের রিটার্ন মান।

তাহলে এন বৃহত্তর চেয়ে 2 , n<3আয় মিথ্যা এবং || শাখা কার্যকর করা হয়। এই সংজ্ঞা, যেখানে একটি সহজবোধ্য বাস্তবায়ন ~-nউৎপাদনের 1 - এন এবং ~-~-nউৎপাদনের N - 2


7

সেসোস, 54 বাইট

0000000: eefb5b 04f83a a75dc2 36f8d7 cf6dd0 af7b3b 3ef8d7  ..[..:.].6...m..{;>..
0000015: cfed12 f661f0 ae9d83 ee63e6 065df7 ce6183 af7383  ....a.....c..]..a..s.
000002a: 76ef3c 3f6383 7eff9c b9e37f                       v.<?c.~.....

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

অনেকত্রিত

set numin
set numout
add 1
fwd 1
add 1
fwd 6
get
sub 1
jmp
    jmp
        sub 1
        fwd 1
        add 1
        rwd 1
    jnz
    fwd 1
    sub 1
    rwd 2
    add 2
    jmp
        rwd 4
        jmp
            sub 1
            fwd 3
            add 1
            rwd 3
        jnz
        fwd 4
        jmp
            sub 1
            rwd 3
            add 1
            rwd 1
            add 1
            fwd 4
        jnz
        rwd 3
        jmp
            sub 1
            fwd 3
            add 1
            rwd 3
        jnz
        fwd 4
        add 2
        jmp
            rwd 5
            jmp
                rwd 1
                jmp
                    sub 1
                    fwd 2
                    add 1
                    rwd 2
                jnz
                fwd 1
                jmp
                    sub 1
                    rwd 1
                    add 1
                    fwd 1
                jnz
                rwd 1
                sub 1
            jnz
            fwd 2
            jmp
                sub 1
                rwd 1
                add 1
                rwd 1
                add 1
                fwd 2
            jnz
            fwd 1
            jmp
                rwd 2
                jmp
                    sub 1
                    fwd 1
                    add 1
                    rwd 1
                jnz
                fwd 2
                jmp
                    sub 1
                    rwd 2
                    add 1
                    fwd 2
                jnz
                fwd 1
            jnz
            fwd 3
            sub 1
        jnz
        rwd 2
        jmp
            sub 1
            rwd 3
            add 1
            fwd 3
        jnz
        fwd 1
        sub 1
    jnz
    fwd 2
jnz
rwd 7
put

বা ব্রেইনফাক স্বরলিপি:

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

6

সি, 43 42 বাইট

@ ডেনিসকে 1 বাইট সংরক্ষণ করা হয়েছে

প্রতিটি উত্তর একই, আমার অবশ্যই কিছু আলাদা করা উচিত!

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

a(n){return n<3?:a(n-a(n-2))+a(n---a(n));}

ব্যাখ্যা: এটি মূলত a(n-a(n-2))+a(n-a(n-1))তবে স্বাচ্ছন্দ্যপূর্ণ সংজ্ঞায়িত আচরণের সাথে (আমার ফোনে কাজ করে (জিসিসি) এবং আইডিয়োন)।


4
1. আপনার এছাড়াও সংকলক উল্লেখ করা উচিত; আপনার "সোয়াগ" অবধারিত আচরণ। 2. জিসিসি সঙ্গে, আপনি প্রয়োজন হবে না 1মধ্যে ?এবং :
ডেনিস

@ ডেনিস মজার বিষয়, একই সূত্রটি আমার পুনরাবৃত্তি পাওয়ারশেলের উত্তরে কাজ করে ...$b+=$b[$_-$b[$_-2]]+$b[$_---$b[$_]]
অ্যাডমবর্কবর্ক

@ টিমমিড কিছু সংকলক n - এর আগে a (n) সংকলন করতে পারে এবং এর জন্য স্ট্যান্ডার্ড (বা সংজ্ঞায়িত) আচরণ নেই। সুতরাং, অপরিবর্তিত আচরণ।
betseg

@ বিটসেগ হ্যাঁ, আমি সম্মত। কেবল এটি নির্দেশ করে যে এটি সি এর জন্য অগত্যা অনন্য নয়
অ্যাডমবর্কবর্ক

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

5

গণিত, 36 বাইট

বাইট গণনাটি আইএসও 8859-1 এনকোডিং এবং ম্যাথমেটিকার $CharacterEncodingসেট সেট করে WindowsANSI(উইন্ডোজে ডিফল্ট; অন্যান্য সেটিংস এছাড়াও কাজ করতে পারে, তবে কিছু UTF-8অবশ্যই পছন্দ করে না)।

±1=±2=1
±n_:=±(n-±(n-1))+±(n-±(n-2))

সংজ্ঞায়িত ±আনরি অপারেটর হিসাবে ।

আমি সদৃশ থেকে মুক্তি পাওয়ার চেষ্টা করেছি, তবে একই বাইট গণনা দিয়ে শেষ করেছি:

±1=±2=1
±n_:=Tr[±(n-±(n-#))&/@{1,2}]

আপনি রেটিনায় এটি করলে আমি আপনাকে একটি +200 অনুদান দিতে পারি
লিক নুন

পছন্দ করুন :)
মার্টিন ইন্ডার

দুই দিন পর.
লিকি নুন

@ ল্যাকিয়ুন আপনি শীঘ্রই উদ্বিগ্নতা প্রদান করলে শীঘ্রই আপনার কোনও রেপ নেই left
mbomb007


4

জেলি , 15 14 বাইট

2Rạ⁸߀$⁺Sµ1>?2

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

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

2Rạ⁸߀$⁺Sµ1>?2  Main link. Argument: n (integer)

2R              Yield [1, 2].
      $         Combine the previous three links into a monadic chain.
   ⁸                Yield n.
  ạ                 Take the absolute difference of the return value and n.
    ߀              Recursively call the main link on each result.
       ⁺            Duplicate the chain.
                    The first copy maps [1, 2] to [a(n - 1), a(n - 2)].
                    The second copy maps [a(n - 1), a(n - 2)] to
                    [a(n - a(n - 1)), a(n - a(n - 2))].
        S           Take the sum.
         µ          Combine all links to the left into a chain.
            ?       If...
           > 2          n is greater than 2, call the chain.
          1         Else, return 1.

আপনি যদি সেসোসে এটি করেন তবে আমি আপনাকে একটি +400 অনুদান দিতে পারি।
লিকি নুন

পছন্দ করুন এটি আপনার মন্তব্যের একদিন পরে প্রকাশিত হয়েছে।
Yytsi

4

জেলি , 14 12 11 বাইট

ịḣ2S;
1Ç⁸¡2ị

এটি একটি পুনরাবৃত্তি পদ্ধতির।

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

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

1Ç¡2ị   Main link. Argument: n

1       Set the return value to 1.
 Ç¡     Call the helper link n times, updating the return value after each call.
   2ị   Extract the second element of the resulting array.


ịḣ2S;   Helper link. Argument: A (array)

ị       At-index; retrieve the elements of A at the values of A.
 ḣ2     Head 2; extract the first two results.
    S   Take the sum of the result.
     ;  Prepend the sum to A.

3

পাইথন, 45 40 বাইট

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

চ্যালেঞ্জের সহজ সরল ব্যাখ্যা।

সংরক্ষিত 5 বাইট @ লিকইনকে ধন্যবাদ!


3

হাস্কেল, 39 37 বাইট

h n|n<3=1|n>2=h(n-h(n-1))+h(n-h(n-2))

চ্যালেঞ্জে বর্ণিত ঠিক যেমন রক্ষী ব্যবহার করে


দুঃখিত, আমার (অভিন্ন) হাস্কেল সমাধান পোস্ট করার আগে আমি আপনার সমাধানটি দেখিনি। তবে নতুন লাইনটি আমলে নিতে হবে বলে 38 বাইট গণনাটি নয়?
লাইকনি

আর পাহারা হতে হয়েছে n<3জন্য h 2 হতে 1
লাইকনি

@ লাইকনি এটি পাইথনস লেন বৈশিষ্ট্য অনুসারে একটি মাল্টলাইন ("") স্ট্রিংয়ের সাথে মিলিয়ে 37 করুন, যদি না আপনি
নিউলাইনটিকে

টিআইএল নোটপ্যাড ++ দুইটি চরিত্র হিসাবে নতুনলাইন গণনা করে।
লাইকনি

@ লাইকনি নিউলাইনটি এটিকে নির্বিচারে এখন 37 বাইট থেকে মুক্তি পেয়েছে।
কার্লকাস্টোর

3

আর, 50 বাইট

a=function(n)ifelse(n<3,1,a(n-a(n-1))+a(n-a(n-2)))

ব্যবহার:

> a(1)
  1
> a(20)
  12


3

সি #, 51 44 বাইট

int a(int n)=>n<3?1:a(n-a(n-1))+a(n-a(n-2));

আমি অবাক হয়েছি যদি এটিকে বেনামে ধন্যবাদ গোলাপিফ্লোয়েডএক্স 33 তৈরি করে সংক্ষিপ্ত করা যায় !


1
সি # 6 এক্সপ্রেশন int a(int n)=>n<3?1:a(n-a(n-a))+a(n-a(n-2));
দেহযুক্ত

আমার ফোনে টাইপ করার সময় আমি টাইপড মনে করি। -a-1
পেরেনগুলির

আমি এটি খেয়ালও করিনি, অসুস্থভাবে এটি ঠিক করুন
rq

3

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

ES6 এ একটি পুনরাবৃত্ত সমাধান। যে কোনও গল্ফিং টিপস অনেক প্রশংসা করেছে।

a=n=>n>2?a(n-a(n-1))+a(n-a(n-2)):1

আরও ছোট করার জন্য আপনাকে / u / ইসমিলোকে ধন্যবাদ।




2

এপিএল, 20 বাইট

{⍵≤2:1⋄+/∇¨⍵-∇¨⍵-⍳2}

ব্যাখ্যা:

{⍵≤2:1⋄+/∇¨⍵-∇¨⍵-⍳2}
 ⍵≤2:1               If argument is 2 or less, return 1
      ⋄              Otherwise:
               ⍵-⍳2  Subtract [1, 2] from the argument
             ∇¨      Recursive call on both
           ⍵-        Subtract both results from the argument     
         ∇¨          Recursive call on both again
       +/            Sum          

2

ভিবিএ এক্সেল 87 বাইট

অপরিবর্তনীয়, যেহেতু আমি এটি এন = 100000 এর জন্য কাজ করতে চাই, বলুন:

Function A(N):ReDim B(N):For i=3 To N:B(i)=B(i-B(i-1)-1)+B(i-B(i-2)-1)+1:Next:A=B(N)+1

... এবং returnপাওয়ার জন্য লাইনের শেষে (বাইট # 87) টিপুনEnd Function "ফ্রি" বিবৃতি । মনে রাখবেন যে এন = 1 এবং 2 এর জন্য আরম্ভ করা এড়াতে বি মানগুলি -1 দ্বারা অফসেট হয়।

সাধারণ হিসাবে স্প্রেডশীটে আহ্বান করুন, যেমন =A(100000)পেতে48157

পুনরাবৃত্ত সংস্করণ, 61 বাইট ,

Function Y(N):If N<3 Then Y=1 Else Y=Y(N-Y(N-1))+Y(N-Y(N-2))

এন> ৩০ এর জন্য অযৌক্তিকভাবে ধীর হতে শুরু করে এবং n> 40 এর জন্য মোটেও কাজ করার কথা বলা যায় না।


আমরা পারফরম্যান্স সম্পর্কে চিন্তা করি না। আমরা কোড দৈর্ঘ্য সম্পর্কে যত্নশীল। আপনার সংক্ষিপ্ত সমাধানটি আপনার উত্তরের শীর্ষে সরিয়ে নেওয়া উচিত।
mbomb007

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

2

রুবি, 36 বাইট

প্রত্যক্ষ বাস্তবায়ন। কোনও গল্ফিং পরামর্শ স্বাগত are

a=->n{n<3?1:a[n-a[n-1]]+a[n-a[n-2]]}

আফাইক, আপনি a = থেকে মুক্তি পেতে পারেন। আপনি যদি এটি এখানে পোস্ট করেন তবে আপনার কোডটি -> দিয়ে শুরু হলে এটি যথেষ্ট ices এটি তখন একটি বেনামী ফাংশন হিসাবে গণনা করা হয়।
Sems

@ সিমস দুর্ভাগ্যক্রমে, ফাংশনটি যেমন নিজেকে কল করে a[n-1]এবং এর মতো করে ফাংশনটির নামকরণ করা প্রয়োজন।
শার্লক 9

2

জাভা 7, 68 61 51 বাইট

17 Leaky নুন ধন্যবাদ সংরক্ষণ করা।

int a(int n){return n<3?1:a(n-a(n-1))+a(n-a(n-2));}

পিপিসিজিতে আপনাকে স্বাগতম!
অ্যাডমবর্কবার্ক

পিপিসিজিতে আপনাকে স্বাগতম! আপনার জাভাতে গল্ফ করার টিপস পছন্দ হতে পারে । একটি বিকল্প ফর্মটি int a(int n){return n<3?1:a(n-a(n-2))+a(n---a(n));}হ'ল : তবে দুর্ভাগ্যক্রমে এটি আপনার কাছে ইতিমধ্যে থাকা উত্তর হিসাবে একই পরিমাণ বাইট ব্যবহার করে .. এছাড়াও, আমি উল্লেখ করব যে আপনার উত্তরটি জাভা in-তে রয়েছে, যেহেতু জাভা 8 উত্তরটি ছোট হবে: n->return n<3?1:a(n-a(n-1))+a(n-a(n-2))( 39 বাইট ) ।
কেভিন ক্রুইজসেন

স্বাগত ছেলেদের জন্য ধন্যবাদ এবং জাভা 8-এ টিপসটির জন্য ধন্যবাদ - আমি বুঝতে পারি নি যে ল্যাম্বডাসকে এরকম অনুমতি দেওয়া হয়েছিল - যদিও পাইথনের মতো তাদের অনুমতি দেওয়া হয়েছিল, তাই আমি অনুমান করি যে আমি এটি সম্পর্কে কখনই ভাবিনি। ল্যাম্বডায় কি অর্ধ-কোলন দরকার?
জাস্টিন

@ জাস্টিনটিভেয়ে আমি জাভা ৮ টি খুব বেশি ব্যবহার করি না, তবে আমি যা শুনেছি সে থেকে আধা- কোলনটি একক-লাইন প্রকাশে গণনা করা হয় না , আমার নিজের জাভা উত্তরগুলির মধ্যে @ ডেভিডকনরড এবং @ সিএডি 97 এর মন্তব্য অনুসারে ।
কেভিন ক্রুজসসেন

2

ওসিস , 9 7 5 বাইট (প্রতিদ্বন্দ্বী)

অ-প্রতিদ্বন্দ্বী , যেহেতু ভাষা চ্যালেঞ্জ পোস্ট করে। 4 বাইট বাঁচানোর জন্য কেনি লাউকে ধন্যবাদ । কোড:

ece+V

প্রসারিত ফর্ম (এর Vজন্য সংক্ষিপ্ত 11):

a(n) = ece+
a(0) = 1
a(1) = 1

কোড:

e        # Stack is empty, so a(n - 1) is used, and it calculates a(n - a(n - 1))
 c       # Calculate a(n - 2)
  e      # Calculate a(n - a(n - 2))
   +     # Add up

এটি অনলাইন চেষ্টা করুন! । 0.1 সেকেন্ডে n = 1000 গণনা করে।


1

পাওয়ারশেল ভি 2 +, 85 79 69 বাইট

param($n)$b=1,1;2..$n|%{$b+=$b[$_-$b[$_-1]]+$b[$_-$b[$_-2]]};$b[$n-1]

ইনপুট নেয় $n, $bএকটি অ্যারে হিসাবে সেট করে @(1, 1), তারপরে একটি লুপ প্রবেশ করে 2 .. $n। প্রতিটি পুনরাবৃত্তি আমরা $bসিকোয়েন্সের সর্বশেষ গণনাটিতে সিকোয়েন্সের একটি সাধারণ +=এবং সংজ্ঞা দিয়ে পরীক্ষা করি। তারপরে আমরা যথাযথ সংখ্যাটি আউটপুট করি $b(এর সাথে -1পাওয়ারশেলের অ্যারেগুলি শূন্য-সূচকযুক্ত)। এটি যদি কাজ করে$n দুটি মানগুলি নিম্ন সূচকে প্রাক-জনবহুল হ'ল 1বা এটি 2কারণেই$b শুরু থেকেই , তাই যদি জাঙ্কের উপর লুপ থাকে তবে তা এড়ানো যায় না।


পুনরাবৃত্তির সমাধান 78 76 বাইট

$a={param($k)if($k-lt3){1}else{(&$a($k-(&$a($k-1))))+(&$a($k-(&$a($k-2))))}}

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

এটিকে এক্সিকিউশন-অপারেটরের মাধ্যমে কল করুন &$a 20। কেবল একটি সরাসরি-পুনরাবৃত্ত কল


1

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

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

গতির জন্য অপরিবর্তনীয় সংস্করণ; পুনরাবৃত্ত সংস্করণ সম্ভবত সংক্ষিপ্ত, তবে আমি এটি অন্য কারও কাছে লেখার জন্য রেখে দেব। আমি যখন ব্যবহার করতে পারি তখন আমি সর্বদা এটি পছন্দ করি reduce। নোট: 1 বাইট ফিরে দ্বারা সংরক্ষিত true(যা কাস্ট 1যখন একটি পূর্ণসংখ্যা প্রেক্ষাপটে ব্যবহৃত) এর জন্য a(1)এবং a(2)



1

চতুর্থ, 76 বাইট

পরিশেষে আমি কাজ এটা পেয়েছিলাম!

: Q recursive dup dup 3 < if - 1+ else 2dup 2 - Q - Q -rot 1- Q - Q + then ;

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

ব্যাখ্যা:

: Q recursive                           \ Define a recursive function Q
    dup dup 3 <                         \ I moved a dup here to golf 2 bytes
    if                                  \ If n < 3, return 1
        - 1                             \ Golf: n-n is zero, add one. Same as 2drop 1+
    else
        2dup 2 - Q - Q                  \ Copy n until 4 on stack, find Q(n-Q(n-2))
        -rot                            \ Move the result below 2 copies of n
        1- Q - Q +                      \ Find Q(n-Q(n-2)), then add to previous ^
    then ;

এটি অনলাইনে চেষ্টা করুন (উপরে থেকে কিছুটা গল্ফ করা হয়নি)

দুর্ভাগ্যবশত, পারস্পরিক পুনরাবৃত্তির একটি বিট খুব শব্দময় golfing জন্য ব্যবহার করতে।


1

ম্যাপেল, 43 41 বাইট

a:=n->`if`(n>2,a(n-a(n-1))+a(n-a(n-2)),1)

ব্যবহার:

> a(1);
  1
> a(20);
  12

এই সমস্যাটি অবশ্যই স্মৃতিচারণের জন্য ভাল প্রার্থী। বিকল্প ক্যাশে ব্যবহার করে , রান সময়গুলি উল্লেখযোগ্যভাবে কেটে যায়:

aC := proc(n) 
      option cache; 
      ifelse( n > 2, aC( n - aC(n-1) ) + aC( n - aC(n-2) ), 1 ); 
end proc:

এটি ব্যবহার করে দেখা যায়:

CodeTools:-Usage( aC(50) );

0

জে, 29 28 বাইট

1:`(+&$:/@:-$:@-&1 2)@.(2&<)

পুনরাবৃত্ত সংজ্ঞা ব্যবহার করে।

ব্যবহার

একাধিক ইনপুট / আউটপুট বিন্যাস করার জন্য অতিরিক্ত কমান্ড ব্যবহার করা হয়।

   f =: 1:`(+&$:/@:-$:@-&1 2)@.(2&<)
   (,:f"0) >: i. 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 1 2 3 3 4 5 5 6  6  6  8  8  8 10  9 10 11 11 12

ব্যাখ্যা

1:`(+&$:/@:-$:@-&1 2)@.(2&<)  Input: n
                        2&<   If n < 2
1:                              Return 1
                              Else
               -&1 2            Subtract [1, 2] from n to get [n-1, n-2]
            $:@                 Call recursively on n-1 and n-2
           -                    Subtract each of the results from n
        /@:                     Reduce using
      $:                          A recursive call on each
    +&                            Then summation
                                Return that value as the result

0

ডিসি, 62 বাইট

?si2sa1dd2:a:a[la1+dsadd1-;a-;alad2-;a-;a+r:ali;a0=A]dsAxli;af

এই দ্রবণটি অ্যারে এবং পুনরাবৃত্তির ব্যবহার করে।

?si          # Take input from stdin and store it in register `i'
2sa          # Initialise register `a' with 2, since we'll be putting in the first
             #   two values in the sequence
1dd2         # Stack contents, top-down: 2 1 1 1
:a           # Pop index, then pop value: Store 1 in a[2]
:a           # Ditto:                     Store 1 in a[1]
[            # Open macro definition
 la 1+ dsa   # Simple counter mechanism: Increment a and keep a copy on stack

# The STACK-TRACKER(tm): Top of stack will be at top of each column, under the
#   dashed line. Read commands from left to right, wrapping around to next line.
#   This will be iteration number n.
  dd   1-    ;a       -          ;a            la            d          
#-----------------------------------------------------------------------
# n    n-1   a[n-1]   n-a[n-1]   a[n-a[n-1]]   n             n          
# n    n     n        n          n             a[n-a[n-1]]   n          
# n    n     n                                 n             a[n-a[n-1]]
#                                                            n          
#                                                                       

  2-            ;a            -             ;a            +      r    :a
#-----------------------------------------------------------------------
# n-2           a[n-2]        n-a[n-2]      a[n-a[n-2]]   a[n]   n      
# n             n             a[n-a[n-1]]   a[n-a[n-1]]   n      a[n]   
# a[n-a[n-1]]   a[n-a[n-1]]   n             n                           
# n             n                                                       

 li;a        # Load index of target element, and fetch that element's current value
             #    Uninitialised values are zero
 0=A         # If a[i]==0, execute A to compute next term
]dsAx        # Close macro definition, store on `A' and execute
li;a         # When we've got enough terms, load target index and push value
f            # Dump stack (a[i]) to stdout

উপসংহারে, যদি কেউ আইডিই তৈরি করে থাকেন dcতবে আমাকে জানান!
জো

0

এরলং, 46 বাইট

f(N)when N<3->1;f(N)->f(N-f(N-1))+f(N-f(N-2)).

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