জেকেন্ডার্ফের প্রতিনিধিত্ব থেকে দশকে রূপান্তর করা


18

জেকেন্ডারফের উপস্থাপনা / বেস ফিবোনাচি নাম্বার সম্পর্কে

এটি এমন একটি নম্বর সিস্টেম যা ফিবোনাচি নম্বরগুলি তার বেস হিসাবে ব্যবহার করে। সংখ্যাগুলি 0 এবং 1 এর সমন্বয়ে গঠিত এবং প্রতিটি 1 এর অর্থ হল যে সংখ্যার সাথে সম্পর্কিত ফিবোনাচি সংখ্যা রয়েছে এবং 0 এর অর্থ এটি নেই।

উদাহরণস্বরূপ, আসুন সমস্ত প্রাকৃতিক সংখ্যা <= 10 টি ফিবোনাকিকে বেস করুন convert

  • 1 টি 1 হবে, কারণ এটি 1 এর যোগফল, যা একটি ফিবোনাচি সংখ্যা,

  • 2 টি 10 ​​হয়ে যাবে, কারণ এটি 2 এর যোগফল, যা একটি ফিবোনাকির সংখ্যা, এবং এটির 1 প্রয়োজন হয় না, কারণ আমরা ইতিমধ্যে কাঙ্ক্ষিত যোগফলটি অর্জন করেছি।

  • 3 টি 100 হয়ে যাবে, কারণ এটি 3 এর যোগফল, যা একটি ফিবোনাকির সংখ্যা এবং এর জন্য 2 বা 1 প্রয়োজন হয় না কারণ আমরা ইতিমধ্যে পছন্দসই যোগফলটি অর্জন করেছি।

  • 4 টি 101 হয়ে যাবে, কারণ এটি [3,1] এর যোগফল, উভয়ই ফিবোনাচি সংখ্যা।
  • 5 টি 1000 হয়ে যাবে, কারণ এটি 5 এর যোগফল, যা একটি ফিবোনাচি নম্বর, এবং আমাদের অন্যান্য সংখ্যার কোনও প্রয়োজন নেই।
  • 6 টি 1001 হয়ে যাবে, কারণ এটি 5 এবং 1 এর ফিবোনাকির সংখ্যার যোগফল।
  • 7 টি 1010 হয়ে যাবে, কারণ এটি ফিবোনাচি সংখ্যা 5 এবং 2 এর যোগফল।
  • 8 টি 10000 হয়ে যাবে, কারণ এটি একটি ফিবোনাচি নম্বর।
  • 9 টি 10001 হয়ে যাবে, কারণ এটি 8 এবং 1 এর ফিবোনাকির সংখ্যার যোগফল।
  • 10 হয়ে যাবে 10010, কারণ এটি ফিবোনাকির সংখ্যা 8 এবং 2 এর যোগফল।

আসুন একটি এলোমেলো বেস ফিবোনাচি নম্বর, 10101001010কে দশমিক হিসাবে রূপান্তর করি: প্রথমে আমরা সংশ্লিষ্ট ফিবোনাচি সংখ্যা লিখি। তারপরে আমরা 1 এর নীচে সংখ্যার যোগফল গণনা করি।

 1   0   1   0   1   0   0   1   0   1   0
 144 89  55  34  21  13  8   5   3   2   1  -> 144+55+21+5+2 = 227.

বেস ফিবোনাচি সংখ্যাগুলি সম্পর্কে আরও পড়ুন: লিঙ্ক , এটিতে একটি সরঞ্জাম রয়েছে যা নিয়মিত পূর্ণসংখ্যাকে ফিবোনাকিকে বেসে রূপান্তর করে। আপনি এটি পরীক্ষা করতে পারেন।

এখন প্রশ্ন:

আপনার কাজটি হ'ল জেকেন্ডারফের প্রতিনিধিত্বতে একটি সংখ্যা নেওয়া এবং এর দশমিক মান আউটপুট করা।

ইনপুট একটি স্ট্রিং যা কেবল 0 এবং 1 এর অন্তর্ভুক্ত (যদিও আপনি যে কোনও উপায়ে ইনপুট নিতে পারেন)।

দশমিক এক নম্বর আউটপুট।

পরীক্ষার কেস: (ইনপুট-> আউটপুট বিন্যাসে)

 1001 -> 6
 100101000 -> 73
 1000000000 -> 89
 1001000000100100010 -> 8432
 1010000010001000100001010000 -> 723452

এটি কোড-গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins

দ্রষ্টব্য: ইনপুটটিতে কোনও শীর্ষস্থানীয় 0 বা একটানা 1 টি থাকবে না।


আমরা কি বিটের তালিকা হিসাবে ইনপুট নিতে পারি?
গম উইজার্ড

ভালো লেগেছে, এস্কি এনকোডড ইনপুট নিন কি তবে এটি বাইনারি রূপান্তর করুন বা এরকম কিছু?
উইন্ডমিল কুকিজ 18

4
আমরা কী LSB- প্রথম অর্ডারে ইনপুট নিতে পারি ?
মেগো


1
@ মেগো হ্যাঁ, আপনি পারেন
উইন্ডমিল কুকিজ

উত্তর:


19

ট্যাক্সি , 1987 1927 বাইট

-60 বাইট অনুভূতির কারণে যে লাইনব্রেকগুলি alচ্ছিক।

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to Chop Suey.Go to Chop Suey:n 1 r 1 l 4 r 1 l.[B]Switch to plan C if no one is waiting.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 3 l.Pickup a passenger going to Narrow Path Park.Pickup a passenger going to Sunny Skies Park.Go to Zoom Zoom:n.Go to Sunny Skies Park:w 2 l.Go to Narrow Path Park:n 1 r 1 r 1 l 1 r.Go to Chop Suey:e 1 r 1 l 1 r.Switch to plan B.[C]1 is waiting at Starchild Numerology.1 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 3 l 3 l 2 r.Pickup a passenger going to Addition Alley.Pickup a passenger going to Cyclone.Go to Cyclone:w 1 r 4 l.[D]Pickup a passenger going to Addition Alley.Pickup a passenger going to Cyclone.Go to Addition Alley:n 2 r 1 r.Go to Cyclone:n 1 l 1 l.Pickup a passenger going to Multiplication Station.Go to Zoom Zoom:n.Go to Narrow Path Park:w 1 l 1 l 1 r.Switch to plan E if no one is waiting.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:e 1 r.Pickup a passenger going to Multiplication Station.Go to Multiplication Station:n 1 r 2 l.Pickup a passenger going to Joyless Park.Go to Joyless Park:n 2 l 1 r 1 r.Go to Addition Alley:w 1 r 2 l 1 l.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 1 l.Pickup a passenger going to Addition Alley.Switch to plan D.[E]Go to Addition Alley:w 1 l 1 r 1 l.Pickup a passenger going to Riverview Bridge.Go to Riverview Bridge:n 1 r.Go to Joyless Park:e 1 r 2 l.Pickup a passenger going to Addition Alley.[F]Switch to plan G if no one is waiting.Pickup a passenger going to Addition Alley.Go to Fueler Up:w 1 l.Go to Addition Alley:n 3 l 1 l.Pickup a passenger going to Addition Alley.Go to Joyless Park:n 1 r 1 r 2 l.Switch to plan F.[G]Go to Addition Alley:w 1 r 2 l 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:n 1 r 1 r.Pickup a passenger going to Post Office.Go to Post Office:n 1 l 1 r.

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

যেহেতু আমি ট্যাক্সি গ্যারেজে শেষে ফিরে আসি না, আমার মনিব আমাকে বহিস্কার করে, তাই এটি একটি ত্রুটি সহ প্রস্থান করে।


Joyless Parkদেখার জন্য খুব সুন্দর জায়গা বলে মনে হচ্ছে
অ্যালোসডিজ বলেছেন

ভাল, এটি তুলনায় কম অক্ষর Sunny Skies Park
জোসিয়াআরয়ানডাব্লু

11

পার্ল 6 , 28 23 বাইট

{[+] (1,2,*+*...*)Z*$_}

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

বেনামী উবুন্টুতে উপলব্ধ একটি তালিকা লাগে 1s এবং 0lsb ক্রম মধ্যে s এবং একটি সংখ্যা দেখায়।

ব্যাখ্যা:

{                     }   # Anonymous codeblock
 [+]                      # The sum of
     (1,2,*+*...*)        # The infinite Fibonacci sequence starting from 1,2
                  Z*      # Zip multiplied by
                    $_    # The input list in LSB form

7

জেলি , 5 বাইট

T‘ÆḞS

লিটল-এন্ডিয়ান ফর্মের (যেমন বামদিকে এলএসবি থেকে ডানদিকে এমএসবিতে) একটি তালিকা গ্রহণ করে এমন এক লিখিত লিঙ্ক।

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


নাইস, আমি একটি বিকল্প 6-byter ছিল: J‘ÆḞḋṚ
মিস্টার এক্সকোডার 19


4

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

f=1:scanl(+)2f
sum.zipWith(*)f.reverse

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

1 এবং 0 এর তালিকা হিসাবে ইনপুট নেয়।

ব্যাখ্যা


f=1:scanl(+)2f

ভেরিয়েবলের মধ্যে প্রথমটি ফিবোনাচি সংখ্যার একটি তালিকা তৈরি করে f

sum.zipWith(*)f.reverse

ইনপুট তালিকাটি গ্রহণ করে reverseএটি প্রতিটি এন্ট্রিটিকে সংশ্লিষ্ট এন্ট্রি দ্বারা গুণিত করে f, তারপরে sumফলাফলগুলি।

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

f=1:scanl(+)2f
sum.zipWith(*)f

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

আমরা যদি প্রথমে কমপক্ষে উল্লেখযোগ্য বিটের সাথে ইনপুট নিই তবে আমাদের দরকার নেই reverseযাতে আমরা 8 বাইট সংরক্ষণ করতে পারি।


4

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

a=b=0
for x in input():b+=a+x;a=b-a
print b

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

তালিকা হিসাবে ইনপুট নেয়। আপডেটটি একটি সংক্ষিপ্ত সংস্করণ a,b=b+x,a+b+x, যা a,b=b,a+bআপনি যদি এড়িয়ে যান তবে ফিবোনাচি আপডেটের মতো x


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

f=lambda n,a=1,b=1:n and n%10*b+f(n/10,b,a+b)

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

দশমিক সংখ্যা হিসাবে ইনপুট নেয়।


3

পাইথ, 13 বাইট

এর বেশিরভাগ (8 বাইট) কেবলমাত্র ফিবোনাচি সংখ্যা তৈরি করছে।

s*V_m=+Z|~YZ1

এই পরীক্ষার স্যুট দিয়ে এটি ব্যবহার করে দেখুন!

ব্যাখ্যা:

s*V_m=+Z|~YZ1QQ     Autofill variables
    m=+Z|~YZ1Q      Generate the first length(input) Fibonacci numbers as follows:
       Z             Start with Z=0
         ~YZ         And Y=[] (update it to Y=Z, return old Y)
        |   1        if Y is [], then replace with 1
      +              Sum Z and Y
     =               Replace Z with sum
    m                Repeat process
             Q       once for each element of the input
   _                Reverse the order of the Fibonacci numbers
 *V                 Vectorize multiplication
s                   Sum


3

জে , 24 14 বাইট

#.~2+&%&1~#-#\

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

24-বাইট সংস্করণটি গল্ফ করে ফিবোনাকির জন্য মিশ্র বেসটি ব্যবহার করে।

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

#.~2+&%&1~#-#\  Example input: y=1 0 0 1 0
          #-#\  Length minus 1-based indices; 4 3 2 1 0
   2     ~      Starting from 2, run the following (4,3,2,1,0) times:
    +&%&1         Given y, compute 1 + 1 / y
                The result is 13/8 8/5 5/3 3/2 2
#.~             Mixed base conversion of y into base above; 2+8=10

জে , 21 বাইট

1#.|.*[:+/@(!~#-])\#\

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

গ্যালেন ইভানভের 25-বাইট সমাধানের পরিমার্জনিত সংস্করণ ।

পাস্কালের ত্রিভুজের ত্রিভুজ যোগফল ব্যবহার করে, যা দ্বিপদী সহগের যোগফলের সমান:

এফএন=Σআমি=0এনএন-আমিসিআমি

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

1#.|.*[:+/@(!~#-])\#\
                       Example input: 1 0 0 1 0
                   #\  Generate 1-based index; 1 2 3 4 5
      [:          \    For each prefix of above... (ex. 1 2 3)
              #-]        Subtract each element from the length (ex. 2 1 0)
           (!~   )       Compute binomial coefficient (ex. 3C0 + 2C1 + 1C2)
        +/@              Sum
                       The result is Fibonacci numbers; 1 2 3 5 8
   |.*                 Multiply with mirrored self; 0 2 0 0 8
1#.                    Sum; 10

জে , 24 বাইট

3 :'y#.~|.(1+%)^:(<#y)2'

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

মোনাডিক সুস্পষ্ট ক্রিয়া ফিবোনাচি বেস উপস্থাপন করে এবং তারপরে বেস রূপান্তর হিসাবে ফিড করে এমন মিশ্র বেস তৈরি করে #.

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

y#.~|.(1+%)^:(<#y)2  Explicit verb, input: y = Fibonacci digit array, n = length of y
      (1+%)          x -> 1 + 1/x
           ^:(<#y)2  Apply the above 0..n-1 times to 2
                     The result looks like 2/1, 3/2, 5/3, 8/5, 13/8, ...
    |.               Reverse
                     Now, if it is fed into #. on the left, the digit values become
                     ...(8/5 * 5/3 * 3/2 * 2/1), (5/3 * 3/2 * 2/1), (3/2 * 2/1), 2/1, 1
                     which is ... 8 5 3 2 1 (Yes, it's Fibonacci.)
y#.~                 Convert y to a number using Fibonacci base

বিকল্প

জে , 27 বাইট

}.@(+#{.3#{.)^:(<:@#)@(,&0)

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

বুদ্ধিটা:

 1  0  0  1  0  1
-1 +1 +1
------------------
    1  1  1  0  1
   -1 +1 +1
------------------
       2  2  0  1
      -2 +2 +2
------------------
          4  2  1
         -4 +4 +4
------------------
             6  5
            -6 +6 +6 <- Add an imaginary digit that has value 1
---------------------
               11  6
              -11+11
---------------------
                  17 <- the answer

জে , 30 বাইট

0.5<.@+(%:5)%~(-:>:%:5)#.,&0 0

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

এটি তৈরিতে সর্বাধিক প্রচেষ্টা নিল। বৃত্তাকার কৌতুক সহ ক্লোড-ফর্ম এক্সপ্রেশন ব্যবহার করে। অভিব্যক্তিতে 0 তম এবং 1 ম মান যথাক্রমে 0 এবং 1 হয়, সুতরাং আসল অঙ্কের শক্তিটি 2 দিয়ে শুরু করতে হবে।

0.5<.@+(%:5)%~(-:>:%:5)#.,&0 0  Tacit verb.
                         ,&0 0  Add two zeroes at the end
              (-:>:%:5)#.       Convert to a number using base phi (golden ratio)
       (%:5)%~                  Divide by sqrt(5)
0.5<.@+                         Round to nearest integer

ত্রুটি ( ((1-sqrt(5))/2)^nশর্তাদি) বাড়তে পারে তবে এটি কখনও 0.5 এর বেশি হয় না, সুতরাং গোলাকার কৌশলটি অসীমের পক্ষে কাজ করে। গাণিতিকভাবে:

সর্বোচ্চ(|RRR|)=15Σ1(1-52)2এন=15Σ0(1-52)এন=5-125<12


চমৎকার সমাধান! স্পষ্ট ক্রিয়াটি সুস্পষ্ট সমাধানকে মারধর করতে পেরে আমি আনন্দিত।
গ্যালেন ইভানভ

আমি একটি সংক্ষিপ্ত স্বতন্ত্র সমাধান সন্ধান করার চেষ্টা করছি, তবে সাফল্য ছাড়াই। 25 এখন জন্য বাইট । আমি পাস্কেলের ট্রায়ঞ্জ ব্যবহার করি।
গ্যালেন ইভানভ

@ গ্যালেনিভানভ এক বছর পরে চ্যালেঞ্জটি পুনর্বিবেচনা করে আমার একটি নতুন, সুপার শর্ট স্যাসিডেশন সমাধান পেয়েছে :)
বুদ্বুদ

দারুণ! আমি শীঘ্রই আরও বিশদ এটি তাকান।
গ্যালেন ইভানভ

2

ম্যাথগল্ফ , 8 6 বাইট

{î)f*+

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

ব্যাখ্যা

{        Start block (foreach in this case)
 î)      Push loop index (1-based) and increment by 1
   f     Get fibonacci number of that index
    *    Multiply with the array value (0 or 1)
     +   Add top two elements of stack. This implicitly pops the loop index the first iteration, which makes the addition become 0+a, where a is the top of the stack.

জোকিংকে 1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে, এবং এলএসবি অর্ডার দেওয়ার জন্য আরও একটি বাইট ধন্যবাদ।


এলএসবি অর্ডার অবশ্যই অনুমোদিত। এছাড়াও, -1 বাইট
জো কিং

@ জোকিং অবশ্যই, আমি এমনকি গত সপ্তাহে অন্তর্নিহিত সংযোজনটিও প্রয়োগ করেছি ... দুর্দান্ত স্পর্শ, এখন ম্যাথগল্ফ প্রথম স্থানে রয়েছে!
ম্যাক্সবি

2

05 এ বি 1 , 11 9 8 বাইট

vyiNÌÅfO

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

ব্যাখ্যা:

v             : For each character in input string (implicit) in LSB order
  yi          : If the current character is truthy (1)
    NÌ        : Add 2 to the current index
       ÅfO    : Add the fibonacci of this number to the stack
  • -২ বাইট : এই কোডটি ছোট করার জন্য ছোট উপায়গুলি নির্দেশ করার জন্য @ কেভিন ক্রুজসেনকে ধন্যবাদ!
  • -১ বাইট : ইনপুটটির জন্য এলএসবি অর্ডার নির্দেশ করার জন্য @ জোনাথন অ্যালানকে ধন্যবাদ!

1
আপনি মুছে ফেলতে পারেন Θ1ইতিমধ্যে 05AB1E এ সত্য। :) এছাড়াও, 2+হতে পারে Ì
কেভিন ক্রুইজসেন

1
আমরা লিটল-এন্ডিয়ান আকারে (যেমন বিপরীত) ইনপুট নিতে পারি, যা একটি বাইট (বা দুটি?) সংরক্ষণ করতে পারে।
জোনাথন অ্যালান






1

সি (জিসিসি) , 63 বাইট

অ্যারের দৈর্ঘ্য সহ 1's এবং 0' এর অ্যারে হিসাবে ইনপুট নেয় । এই সমাধানটি একটি বরং সরাসরি-সম্মুখের পিছনের লুপ।

f(_,l,a,b,t)int*_;{a=b=1;for(t=0;l--;b=(a+=b)-b)t+=a*_[l];_=t;}

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



0

রেটিনা 0.8.2 , 23 বাইট

0?
;
+`1;(1*);
;1$1;1
1

এটি অনলাইন চেষ্টা করুন! লিঙ্কে দ্রুত পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

0?
;

যেকোন জায়গায় বিভাজক Inোকান এবং যে কোনও শূন্যগুলি মুছুন। উদাহরণস্বরূপ, 1001হয়ে যায় ;1;;;1;

+`1;(1*);
;1$1;1

তাদের মানগুলির সমষ্টি মূলের মানের সমান হওয়ায় বার বার বারে দুটিটিকে পরের দুটি স্থানে 1একটি করে প্রতিস্থাপন করুন ।111অতএব স্থানান্তরিত এবং শেষ দুটি স্থানে পৌঁছানো অবধি জমা হওয়া, যার (নতুন যুক্ত বিভাজনের কারণে) এখন উভয়েরই মূল্য রয়েছে 1

1

এস গণনা করুন 1



0

জাভাস্ক্রিপ্ট (নোড.জেএস) , 41 বাইট

এক্সনরের উত্তরের একটি বন্দর । বিগআইন্ট আক্ষরিক হিসাবে ইনপুট নেয়।

f=(n,a=1n,b=a)=>n&&n%10n*b+f(n/10n,b,a+b)

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


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

LSB- প্রথম ক্রমে অক্ষরের অ্যারে হিসাবে ইনপুট নেয়।

s=>s.map(k=>t+=k*(z=x,x=y,y+=z),x=t=0,y=1)|t

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


0

আসলে , 8 বাইট

;r⌐@░♂FΣ

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

ইনপুটটি এলএসবি-প্রথম ক্রমে বিটের তালিকা হিসাবে নেওয়া হয়।

ব্যাখ্যা:

;r⌐@░♂FΣ
;r        range(0, len(input))
  ⌐       add 2 to every element in range (range(2, len(input)+2))
   @░     filter: take values in range that correspond to 1s in input
     ♂F   Fibonacci number at index of each element in list (Actually uses the F(0)=F(1)=1 definition, which is why we needed to add 2 earlier)
       Σ  sum

0

পাওয়ারশেল, 68 বাইট

param($s)$b=1
$s[$s.Length..0]|%{$a,$b=$b,($a+$b)
$x+=($_-48)*$b}
$x

পরীক্ষার স্ক্রিপ্ট:

$f = {
param($s)$b=1
$s[$s.Length..0]|%{$a,$b=$b,($a+$b)
$x+=($_-48)*$b}
$x
}

@(
    ,("1001", 6)
    ,("100101000", 73)
    ,("1000000000", 89)
    ,("1001000000100100010", 8432)
    ,("1010000010001000100001010000", 723452)
) | % {
    $s,$e = $_
    $r = &$f $s
    "$($r-eq$e): $r"
}

আউটপুট:

True: 6
True: 73
True: 89
True: 8432
True: 723452

0

জাভা (ওপেনজেডিকে 8) , 65 বাইট

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

d->{int s=0,f=1,h=1;for(int i:d){s+=i>0?f:0;f=h+(h=f);}return s;}

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

Ungolfed

d->{                        // Lambda function that takes array of ints
    int s=0,f=1,h=1;        // Initialise sum and fibonacci vars
    for(int i:d){           // Loop through each input integer
        s+=i>0?f:0;         // If it's 1 add current fibonacci number to sum
        f=h+(h=f);          // Increase fibonacci number 
    }return s;              // return sum
}

0

জেড 80 গল্ফ , 34 বাইট

00000000: dde1 f1b7 2819 fe30 2812 4504 aff5 3cf5  ....(..0(.E...<.
00000010: d1f1 82d5 f510 f9c1 f17c 8067 2c18 e3dd  .........|.g,...
00000020: e5c9                                     ..

1001 ইনপুট সহ উদাহরণস্বরূপ - এটি অনলাইনে চেষ্টা করুন!

100101000 ইনপুট সহ উদাহরণ - এটি অনলাইনে চেষ্টা করুন!

এসেম্বলি:

zeck:		; input=push on stack in MSB order (eg top is LSB) output=reg h
pop ix		; save return addr in ix
f:
pop af		; get next digit
or a
jr z, return	; if current digit==0, return
cp 0x30
jr z, skip	; if current digit=='0' (e.g. not '1'), skip loop
ld b, l		; find fib of counter
fib:
	inc b	; 1-indexing for func to work
	xor a	; set a to 0 (1st fibo num)
	push af
	inc a	; set a to 1 (2nd fibo num)
	push af
	fib_loop:
		pop de
		pop af
		add d
		push de
		push af
		djnz fib_loop
pop bc		; get the fibo num just calculated
pop af		; pop just to reset stack frame
ld a, h
add b		; add current fibo number to sum
ld h, a
skip:
inc l		; increment counter reg
jr f		; repeat loop
return:
push ix		; push the return addr to ret to it
ret
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.