অল্টারনেটিং পাওয়ার ফিবোনাচি সিকোয়েন্স


24

সংজ্ঞা

অল্টারনেটিং পাওয়ার ফিবোনাচি সিকোয়েন্সটি নীচে গঠিত হয়।

  1. খালি ক্রম দিয়ে শুরু করুন এবং এন থেকে 1 সেট করুন ।

  2. পুনরাবৃত্তির সাথে গণনা f n , n তম অ-নেতিবাচক ফিবোনাচি নম্বর
    0 প্রথম, 1 দ্বিতীয় এবং তৃতীয়, 2 চতুর্থ। অন্যান্য সমস্ত ক্রমিকের পূর্ববর্তী দুটি সংখ্যার যোগ করে প্রাপ্ত হয়, সুতরাং 3 = 1 + 2 পঞ্চম, 5 = 2 + 3 ষষ্ঠটি ইত্যাদি etc.

  3. যদি এনটি বিজোড় হয় তবে এফ এন এর চিহ্নটি পরিবর্তন করুন ।

  4. পরিশেষে 2 এন -1 কপি এন ক্রম হয়।

  5. বৃদ্ধি এন এবং পদক্ষেপ 2 এ ফিরে যান।

এপিএফ সিকোয়েন্সের এটি প্রথম একশ শর্ত।

 0  1  1 -1 -1 -1 -1  2  2  2  2  2  2  2  2 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3
-3 -3 -3 -3 -3 -3  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5
 5  5  5  5  5  5  5  5  5  5  5  5  5 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8
-8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8

কার্য

একটি পূর্ণ প্রোগ্রাম বা একটি ফাংশন যে একটি ধনাত্মক পূর্ণসংখ্যা লাগে লিখুন এন ইনপুট এবং কপি করে প্রিন্ট হিসাবে অথবা ফেরৎ এন APF ক্রম পরিভাষা।

আপনি যদি 0-ভিত্তিক সূচক পছন্দ করেন তবে আপনি বিকল্পভাবে একটি নে-নেতিবাচক পূর্ণসংখ্যা n নিতে পারেন এবং সূচি n এ এপিএফ নম্বর মুদ্রণ করতে বা ফিরে আসতে পারেন ।

এটি ; সংক্ষিপ্ততম কোডটি বাইটস জিততে পারে!

পরীক্ষার কেস (1-ভিত্তিক)

    1 ->    0
    2 ->    1
    3 ->    1
    4 ->   -1
    7 ->   -1
    8 ->    2
  100 ->   -8
  250 ->   13
  500 ->  -21
 1000 ->   34
11111 ->  233
22222 -> -377
33333 ->  610

পরীক্ষার কেস (0-ভিত্তিক)

    0 ->    0
    1 ->    1
    2 ->    1
    3 ->   -1
    6 ->   -1
    7 ->    2
   99 ->   -8
  249 ->   13
  499 ->  -21
  999 ->   34
11110 ->  233
22221 -> -377
33332 ->  610

এন এর জন্য কোনও বাধা আছে ?
Okx

2
যতক্ষণ না আপনার অ্যালগোরিদম নির্বিচারে বড় আকারের n এর জন্য কাজ করে আপনি ধরে নিতে পারেন যে এটি আপনার ডেটা টাইপের সাথে খাপ খায়।
ডেনিস

1
এটির কি কোনও OEIS নম্বর আছে?
মাইন্ডউইন

পছন্দ করেছেন
ডেনিস

উত্তর:


12

জেলি , 5 বাইট

BLCÆḞ

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

কিভাবে?

ফিবোনাচি সিরিজটিকে আবার নেতিবাচক সূচকে প্রসারিত করা যেমন সম্পর্কটি f(i) = f(i-2) + f(i-1)এখনও ধরে রেখেছে:

  i   ...   -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   4   5 ...
f(i)  ...  -21  13  -8   5  -3   2  -1   1   0   1   1   2   3   5   8 ...

i=0সংখ্যাগুলি থেকে ফিরে যাওয়া আমাদের 2 n-1 বার পুনরাবৃত্তি করতে হবে এবং জেলি এর ফিবোনাচি অন্তর্নির্মিত ÆḞ, এগুলি গণনা করবে।

আমরা জানতে পারেন -i(একটি ধনাত্মক সংখ্যা) আমরা বিট দৈর্ঘ্যের গ্রহণ করে প্রয়োজন nএবং বিয়োগ 1

যেহেতু আমরা চাই i(একটি ঋণাত্মক সংখ্যা) আমরা পরিবর্তে সম্পাদন করতে পারবেন 1-bitLengthএবং জেলি জন্য পরমাণুর হয়েছে 1-x, C, সম্পূরক একসংখ্যা।

BLCÆḞ - Main link: n               e.g.  500
B     - convert n to a binary list      [1,1,1,1,1,0,1,0,0]
 L    - get the length                   9
  C   - complement                      -8
   ÆḞ - Fibonacci                       -21

আমি জানতাম যে একটি ছোট্ট উপায় আছে তবে এতটা নয়, ভেবেছিলো এটি সরিয়ে ফেলার কোনও উপায় সহ 7 বাইট হবে µএবং
মাইল

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

4
সত্য, আমি অবাক হয়েছি জেলি একটি
বায়ার

22

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

f=lambda n:n<1or f(n/4)-f(n/2)

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

এক-ইন্ডেক্স।

ক্রমটি ধাঁধার মতো অনুভূত হয়েছিল, এমন কিছু যা ডেনিস প্রকাশের জন্য একটি ছোট উপায় রেখে উত্পন্ন করেছিল। পাওয়ার-অফ-টু পুনরাবৃত্তিগুলি বিট-শিফটিং (2 দ্বারা তল বিভাজন) দ্বারা পুনরাবৃত্তি করার পরামর্শ দেয়। অলটারনেটিং-সাইন ফিবোনাচি পুনরাবৃত্তি f(n)=f(n-2)-f(n-1)হ্রাসের স্থানে বিটশিফ্টের সাথে মানিয়ে নেওয়া যেতে পারে। বেস কেসটি দুর্দান্তভাবে কাজ করে কারণ সবকিছুই ফানেল করেn=0


6

গণিত, 43 36 24 বাইট tes

Fibonacci@-Floor@Log2@#&

G বাইট @ গ্রেগমার্টিনকে ধন্যবাদ রক্ষা করেছে এবং আরও ১২ টি ধন্যবাদ @ জাংহওয়ানমিনকে।


1
আপনি কয়েকটা বাইটের সাহায্যে Floor@Log2@#এবং লিখে Fibonacci[t=...](এবং শেষ ঘোষকের ফাঁকা স্থানগুলি সরিয়ে) সংরক্ষণ করতে পারেন।
গ্রেগ মার্টিন

1
-12 বাইট: Fibonacci@-Floor@Log2@#&- Fibonacciনেতিবাচক যুক্তিও নিতে পারে (আপনার জন্য সাইন যত্ন নেয়)।
জংহওয়ান মিন

5

এমএটিএল , 19 17 16 11 বাইট

lOiB"yy-]x&

ইনপুটটি 1-ভিত্তিক।

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

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

1-ভিত্তিক ইনপুট n এর জন্য , m এর n এর বাইনারি প্রসারণের অঙ্কের সংখ্যা হোক । এন আউটপুট ক্রমানুসারে -th শব্দ মি ফিবানচি ক্রমানুসারে -th শব্দ, তার নিদর্শন সম্ভবত সঙ্গে পরিবর্তন করেছেন।

ফিবোনাচি সিকোয়েন্সের শর্তগুলি গণনা করার জন্য একটি ধারণা মিটার পুনরাবৃত্তি করতে হবে । for eachবাইনারি অঙ্কগুলির অ্যারে ব্যবহার করে একটি লুপের সাহায্যে এটি সহজ । তাহলে ফিবানচি ক্রম সঙ্গে initiallized হয়েছে 0 , তারপর 1 চলিত, iterating মি বার স্থাপিত হবে M + 2 স্ট্যাক পদ, তাই উপরের দুটি সংখ্যার মুছে যাবে করতে হবে। পরিবর্তে, আমরা 1 , তারপর 0 দিয়ে ইনিশিয়ালাইজ করি । এইভাবে পরবর্তী উত্পন্ন পদগুলি 1 , 1 , 2 , ... এবং কেবলমাত্র একটি মুছে ফেলা প্রয়োজন needed

সাইন এম বার পরিবর্তন করতে অন্য লুপ ব্যবহার করে সাইনটি মোকাবেলা করা যেতে পারে । তবে তা ব্যয়বহুল। দুটি লুপ একীভূত করা ভাল, যা কেবল ফিবোনাকির পুনরাবৃত্তিতে যোগ করার পরিবর্তে বিয়োগ করেই করা হয়।

l       % Push 1
O       % Push 0
iB      % Input converted to binary array
"       % For each
  yy    %   Duplicate top two elements
  -     %   Subtract. This computes the new Fibonacci term with the sign changes
]       % End
x       % Delete top number
&       % Specify that implicit display should take only one input
        % Implicitly display the top of the stack



3

জেলি , 9 বাইট

BLµ’ÆḞN⁸¡

এক-ভিত্তিক সূচক ব্যবহার করে।

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

ব্যাখ্যা

এই পদ্ধতিটি যদি আপনার ফিবোনাচি ফাংশনটি কেবল অ-নেতিবাচক আর্গুমেন্টকে সমর্থন করে তবে কাজ করে।

BLµ’ÆḞN⁸¡  Input: integer n
B          Binary digits of n
 L         Length. len(bin(2)) = floor(log2(n)))
  µ        Start new monadic chain on x = len(bin(2))
   ’       Decrement
    ÆḞ     Get Fibonacci(x-1)
       ⁸¡  Repeat x times on that
      N      Negate.
           Return Fibonacci(x-1) if x is even else -Fibonacci(x-1)

3

জাপট , 6 বাইট

Mg1-¢l

এটি অনলাইন পরীক্ষা!

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

অন্যান্য উত্তরে উল্লিখিত হিসাবে, বিকল্প-চিহ্ন ফিবোনাচি সিরিজের n পদটি -n এর সমান তম নিয়মিত সিরিজে পরিভাষা। এনপুটটির বিট-দৈর্ঘ্য গ্রহণ করে এবং একটিকে বিয়োগ করে পাওয়া যাবে; বিট-দৈর্ঘ্যে 1 বিয়োগের এই ফলাফলটিকে অগ্রাহ্য করা।

Mg1-¢l
    ¢l  // Calculate the length of the input in binary.
  1-    // Subtract this from 1.
Mg      // Get the Fibonacci number at this index.

3

05AB1E 1 ই , 11 10 বাইট

1-ভিত্তিক সূচক ব্যবহার করে

05AB1E এর ফিবোনাচি ফাংশনটি এন এর চেয়ে কম ইতিবাচক সংখ্যা প্রদান করে , যার অর্থ আমাদের প্রয়োজনের চেয়ে আরও বেশি উত্পাদন করতে হবে, সূচী দ্বারা সঠিক নম্বরটি পেতে এবং তারপরে সাইনটি গণনা করতে হবে। সুতরাং আমি আশেপাশে ভিত্তিক যে কোনও পদ্ধতিতে সংখ্যাগুলি পুনরাবৃত্তির সাথে গণনা করার চেয়ে কম হবে doubt

লুই মেন্ডোর এমএটিএল উত্তরে বর্ণিত হিসাবে কেসটি1, 0 পরিচালনা করতে আমরা বিপরীত দিয়ে স্ট্যাকটি শুরু করতে পারি এই উপলব্ধিটি ব্যবহার করেn=1

XÎbgG‚D«`-

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

ব্যাখ্যা

X             # push 1
 Î            # push 0 and input
  b           # convert input to binary
   g          # get length of binary number
    G         # for N in [1...len(bin(input))-1] do:
     ‚        # pair the top 2 elements of the stack in a list
      D       # duplicate the list 
       «      # concatenate the 2 lists together
        `     # split into separate elements on the stack
         -    # subtract the top 2 elements

2

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

{flat(((0,1,*+*...*)Z*|<-1 1>xx*)Zxx(1,2,4...*))[$_]}

ক্রমটি সরলভাবে বাস্তবায়ন, এটি যেভাবে বর্ণিত হয়েছিল।
জিরো-ভিত্তিক।


2

জুলিয়া 0.5 , 19 বাইট

!n=n<1||!(n/=4)-!2n

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

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

এটি @ xnor এর পাইথন উত্তরের মতো একই সূত্র ব্যবহার করে । পুনরাবৃত্ত সম্পর্ক
g (n) = g (n-2) + g (n-1) ফিবোনাচি অনুক্রমের নেতিবাচক পদগুলি উত্পন্ন করে, যা বিকল্প চিহ্নগুলির সাথে ধনাত্মক পদগুলির সমান। একই সংখ্যার 2 কে পুনরাবৃত্তি চালানোর যে কোনও জায়গা থেকে , আমরা পূর্বের 2 কে -1 সংখ্যার রান এবং 2 এবং 4 দ্বারা সূচককে ভাগ করে 2 কে -2 সংখ্যার রান চয়ন করতে পারি

বরং সোজাসাপ্টা

f(n)=n<1||f(n÷4)-f(n÷2) # 25 bytes

আমরা আমাদের উদ্দেশ্যে অপারেটরটির নতুন সংজ্ঞা দিতে পারি can এছাড়াও, ভাসমানগুলির সাথে ঠিক সূক্ষ্মভাবে কাজ করবে, তাই আমরা পেয়েছি

!n=n<1||!(n/4)-!(n/2)   # 21 bytes

অবশেষে, আমরা 4 দ্বারা বিভাজন সহ n আপডেট করি তবে ডাব্লুউই n / 2 কে 2n হিসাবে লিখতে পারে এবং একটি জুটি পেরসকে বাদ দিতে পারে, যার ফলে এই উত্তরে 19-বাইট ফাংশন সংজ্ঞা হয়।


1

জে , 18 বাইট

(%>:-*:)t.@<:@#@#:

এক-ভিত্তিক সূচক ব্যবহার করে। একটি ইনপুট পূর্ণসংখ্যায় n > 0 নেয় এবং floor(log2(n))এর বাইনারি উপস্থাপনার দৈর্ঘ্য সন্ধান করে এবং তারপরে সেই মানটিকে হ্রাস করে utes এরপরে এটি x / (1 + x - x 2) উত্পাদনকারী ফাংশনের floor(log2(n))-1তম সহগ খুঁজে পায় ) যা নেতিবাচক-সূচকযুক্ত ফিবোনাচি মানগুলির জন্য জিএফ।

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

ব্যাখ্যা

(%>:-*:)t.@<:@#@#:  Input: integer n
                #:  Binary
              #@    Length
           <:@      Decrement
(      )            The generating function x/(1+x-x^2)
  >:                  Increment x
     *:               Square x
    -                 Subtract
 %                    Divide x by previous
        t.          Get series coefficient at the index given by previous value
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.