ফিবোনাচি অনুক্রমের লিনিয়ার বিভাজন inter


20

আপনার টাস্ক খুঁজে পেতে এন ফিবানচি নম্বর, কিন্তু এন অগত্যা একটি পূর্ণসংখ্যা নয়।

ফিবোনাচি সিকোয়েন্স, 0-সূচকযুক্ত নীচে চলেছে:

0, 1, 2, 3, 4, 5,  6,  7, ...

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

তবে, আমরা 2 .4 তম নম্বর চাইলে কি হয় ?

2.4 সংখ্যা 0.4 বার 3 মধ্যে পার্থক্য য় এবং 2 য় ফিবানচি সংখ্যার প্লাস 2 য় ফিবানচি সংখ্যা। সুতরাং, 2.4 তম ফিবোনাচি সংখ্যাটি 2 + 0.4 * (3 – 2) = 2.4

একইভাবে, 6.35 তম ফিবোনাচি নম্বরটি 13 + 0.35 * (21 – 13) = 15.8

আপনার কাজটি হ'ল n ফিবোনাচি সংখ্যাটি সন্ধান করা, যেমন এন 0 এর চেয়ে বড় বা সমান।

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

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড!

আরও কয়েকটি উদাহরণ:

0        1
4.5    6.5
0.7      1
7       21

2
আপনি এখানে যে অপারেশনটি করছেন এটির নাম "লিনিয়ার ইন্টারপোলেশন"। (যদি আমি পোস্টটির শিরোনামটি প্রতিফলিত করতে পরিবর্তন করি তবে আপনি কি আপত্তি করবেন?) এটিতে ফিবোনাকির সম্পত্তিটি চ (এন-2) + চ (এন-1) = চ (এন) বলে মনে হচ্ছে, সুতরাং আমার ধারণা এটি হ'ল ফিবোনাচি অনুক্রমের একটি যুক্তিসঙ্গত সাধারণীকরণ ization (কোনও মানক

@ আইস ৫২৩, আপনি যদি মনে করেন এটি প্রশ্নের উন্নতি করে তবে হ্যাঁ, আপনি পোস্টের শিরোনাম পরিবর্তন করতে পারেন।
ড্যানিয়েল

আমি মনে করি কেউ ভবিষ্যতে অনুরূপ কিছু জিজ্ঞাসা করলে প্রশ্নটি আরও সহজ করা সম্ভব হবে এবং "সম্পর্কিত" তালিকায় এটি কী রয়েছে সে সম্পর্কে এটি আরও পরিষ্কার করে দিবে I সুতরাং উত্তরগুলি সঠিক জায়গায় পৌঁছে দেওয়ার সাহায্যে এটি প্রশ্নটিকে আরও উন্নত করবে।

2
@ আইস দেখে মনে হচ্ছে বিনেট সূত্রের একটি সাধারণীকরণ রয়েছে: mathworld.wolfram.com/FibonacciNumber.html
নীল

1
যদিও কোড গল্ফকে অনুরোধটি ন্যায়সঙ্গত করতে হবে না (আমার ধারণা), এটি একটি অদ্ভুত ক্রিয়া বলে মনে হচ্ছে; এটি অনুসারে, যেহেতু F_0 = 0এবং F_2 = 1, আমাদের থাকা উচিত F_1 = (1/2)(F_0 + F_2) = 1/2
এলস্পাইস

উত্তর:


7

জেলি , 5 বাইট

_Ḟ1+¡

এটি বিল্ট-ইনগুলি ছাড়া একটি পুনরাবৃত্তি সমাধান। এটি চ্যালেঞ্জ অনুমান হিসাবে একই সূচক ব্যবহার করে।

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

পটভূমি

চ্যালেঞ্জ স্পেসে সংজ্ঞায়িত ফাংশন এবং এফ যথাক্রমে সংজ্ঞায়িত ফিবোনাচি ফাংশন হিসাবে চলুন (যেমন, সাথে এফ (0) = 0 )। অ-নেতিবাচক পূর্ণসংখ্যা n এর জন্য আমাদের কাছে f (n) = F (n + 1) রয়েছে । যখন 0 ≤ x <1 , চ্যালেঞ্জ স্পেসটি f (n + x) কে f (n) + (f (n + 1) - f (n)) x হিসাবে সংজ্ঞায়িত করে ।

স্পষ্টত, এই মাত্র বেস মামলা প্রভাবিত, কিন্তু না রিকার্সিভ সূত্র, অর্থাত, চ (ঢ) = F (N - 1) + F (ঢ - 2) ঝুলিতে যেমন জন্য would এফ । এর অর্থ আমরা সহজেই f (n) = f (n) + f (n - 1) x- তে পূর্ণসংখ্যার যুক্তির সংজ্ঞা সহজ করতে পারি ।

অন্যরা যেমন তাদের উত্তরগুলিতে উল্লেখ করেছে, পুনরাবৃত্তির সম্পর্কটি অ-পূর্ণসংখ্যার যুক্তিও রাখে। এটি সহজেই যাচাইযোগ্য as

প্রমাণ

যেহেতু f (0) = f (1) = 1 , f অন্তর্বর্তী স্থির মধ্যে [0, 1] এবং f (0 + x) = 1 সমস্ত এক্স এর জন্য । তদ্ব্যতীত, চ (-1) = এফ (0) 0 = , তাই চ (-1 + X) = চ (-1) + + (চ (0) - চ (-1)) এক্স = 0 টি + 1x = এক্স । এই বেস কেসগুলি [-1, 1) এ অন্তর্ভুক্ত রয়েছে , সুতরাং পুনরাবৃত্ত সূত্রের সাথে তারা এফ এর সংজ্ঞাটি সম্পূর্ণ করে ।

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

আগের মতো, আমাদের ++ প্রোগ্রামের একমাত্র যুক্তিটি হোক এন + এক্স let

¡একটি দ্রুত হয় যার অর্থ, এটির মধ্যে নিজের বাম এবং পালাক্রমে তাদের কিছু লিঙ্ক হ্রাস, quicklink¡বিশেষত এক বা দুটি লিঙ্ক গ্রহণ করে।

  • <F:monad|dyad><N:any>লিঙ্কটি এন কল করে , আর ফিরে আসে এবং এফ চালায় মোট আর বার ।

  • <nilad|missing><F:monad|dyad>সেট r গত কম্যান্ড-লাইন যুক্তি (বা তাদের অনুপস্থিতিতে stdin থেকে একটি ইনপুট) এবং, executes থেকে এফ মোট r বার কার্যকর করে।

যেহেতু 1নীলাদ (তর্ক ছাড়াই একটি লিঙ্ক), দ্বিতীয় ক্ষেত্রে প্রযোজ্য, এবং n বার কার্যকর হবে (একটি অ-পূর্ণসংখ্যার যুক্তিটি গোল করে দেওয়া হবে)। প্রতিটি কল করার পরে , দ্রুত লিঙ্কের বাম আর্গুমেন্টটি রিটার্ন মান এবং বাম আর্গুমেন্টের পূর্ববর্তী মানের সাথে ডান আর্গুমেন্ট প্রতিস্থাপন করা হয়।+ +

পুরো প্রোগ্রাম হিসাবে, ইনপুট মেঝে, ফলন এন ; তারপরে _ইনপুট থেকে ফলাফলটি বিয়োগ করুন, ** x ফলন হবে যা প্রত্যাবর্তনের মান হয়ে যায়।

1+¡তারপরে কল করুন - পূর্বে বর্ণিত হিসাবে - বাম আর্গুমেন্ট 1 = f (0 + x) এবং ডান আর্গুমেন্ট x = f (-1 + x) দিয়ে , যা পছন্দসই আউটপুটটি গণনা করে।


আহ, ফিবোনাচি চ্যালেঞ্জগুলির জন্য কতটা কার্যকর । ¡ডায়াডসের সাথে ফাইবোনাকির মতো কাজ করা কি উদ্দেশ্যমূলক ছিল ?
এরিক আউটগল্ফার

Oooh - %1+¡: মধ্যে রৈখিক ক্ষেপক এন × এফ (ঢ)এন এবং N × এফ (ঢ -1) + + এফ (ঢ)এন-ε এবং তাদের মধ্যবর্তী বাড়ানো এন-ε এবং এন
জোনাথন অ্যালান

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

@ জোনাথান অ্যালান আমি নিশ্চিত যে আমি বুঝতে পেরেছি না। কী %1+¡করার কথা?
ডেনিস

@Dennis Erm, বোঝানো , ভাল \ _o_ / ... কিন্তু এটি পরীক্ষা না প্রদর্শিত হবে কি: ডি
জনাথন অ্যালান

5

গণিত, 32 বাইট

If[#<2,1~Max~#,#0[#-1]+#0[#-2]]&

খাঁটি ফাংশন ইনপুট হিসাবে একটি nonnegative আসল নম্বর গ্রহণ এবং একটি আসল নম্বর ফিরে। যদি 1~Max~#এটি দ্বারা প্রতিস্থাপন করা হয় 1, এটি পূর্ণসংখ্যার আর্গুমেন্টের জন্য 0-ইনডেক্সেড ফিবোনাচি সংখ্যাগুলির স্ট্যান্ডার্ড পুনরাবৃত্ত সংজ্ঞা হবে। তবে 1~Max~#0 এবং 2 এর মধ্যে আসল ইনপুটগুলির জন্য সঠিক টুকরোচক লিনিয়ার ফাংশন এবং পুনরাবৃত্তিটি বাকীগুলির যত্ন নেয়। (তুচ্ছ বস্তু বিষয়: 1-সূচীবদ্ধ ফিবানচি নম্বরে পরিবর্তন পরিবর্তন করে কেবল এটি করা সম্ভব Maxএকটি থেকে Min!)

বিল্টিনের সাথে আমি যে সংক্ষিপ্ততমটি পেতে পারি তা হ'ল 37-বাইট (b=Fibonacci)[i=Floor@#](#-i)+b[i+1]&



3

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

f=x=>x<1?1:x<2?x:f(x-1)+f(x-2)
<input type=number value=2.4 oninput="O.value=f(value)"> <input id=O value=2.4 disabled>

শূন্য-সূচকযুক্ত পুনরাবৃত্তিমূলক ফিবোনাচি সিকোয়েন্স সংজ্ঞাটির তুচ্ছ পরিবর্তন। কিছু ইনপুটগুলির জন্য সামান্য বৃত্তাকার ত্রুটি দিতে পারে।


এই চালাক। আমি ভেবেছিলাম এটি কাজ করে না।
লিকি নুন

1

জেলি , 17 12 বাইট

’Ñ+Ñ
’»0‘ÇỊ?

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

অ-বিল্টিন সমাধান।

ব্যাখ্যা

সহায়ক ফাংশন 1Ŀ

’Ñ+Ñ
 Ñ    Call the main program on
’       {the input} - 1;
   Ñ  Call the main program on {the input};
  +   Add those results{and return the result}

মূল প্রোগ্রাম

’»0‘ÇỊ?
’        Subtract 1
 »0      but replace negative results with 0
     Ị?  If the result is less than or equal to 1
   ‘     Return the result plus 1
    Ç    else return the result

0 থেকে 1 ব্যাপ্তির একটি ইনপুট অতএব 0 টিতে পরিপূর্ণ-বিয়োগ করবে, সুতরাং আমরা F (0) = F (1) = 1 পেতে 1 যুক্ত করব। 1 থেকে 2 ব্যাপ্তির একটি ইনপুট নিজেই ফিরে আসবে। এই বেস কেসগুলি একটি সাধারণ ফিবোনাচি পুনরাবৃত্তি করতে এবং সেখান থেকে অন্যান্য মানগুলি গণনা করার জন্য যথেষ্ট।


1

এক্সেল, 137 124 119 113 102 97 বাইট

পুনরাবৃত্ত / পুনরুক্তি পদ্ধতি (সরাসরি নবম পদগুলি গণনা করুন) এটি ওয়ান-ইনডেক্স পদ্ধতিটি ব্যবহার করে । যোগ করার পদ্ধতি +1থেকে =TRUNC(B1)-ইন্ডেক্স শূন্য থেকে এটি পরিবর্তন।

=A7+(A8-A7)*MOD(B1,1)
=5^.5
=(1+A2)/2
=TRUNC(B1)
=A4+1
=-1/A3
=(A3^A4-A6^A4)/A2
=(A3^A5-A6^A5)/A2

কোড স্নিপেটটি ঘর এ 1 থেকে শুরু করে স্থাপনের উদ্দেশ্যে ।

ইনপুট সেলটি বি 1 । আউটপুট সেল এ 1


1

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

রাউন্ডিং নিয়ে কয়েকটি সমস্যা রয়েছে

n=>(i=(g=(z,x=1,y=0)=>z?g(--z,x+y,x):y)(++n|0))+n%1*(g(++n|0)-i)

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

f=
n=>(i=(g=(z,x=1,y=0)=>z?g(--z,x+y,x):y)(++n|0))+n%1*(g(++n|0)-i)
console.log(f(2.4))
console.log(f(6.35))
console.log(f(42.42))



0

জেলি , 13 9 বাইট

,‘ḞÆḞḅ%1$

এটি চ্যালেঞ্জের অনুমান হিসাবে একই সূচক ব্যবহার করে।

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

পটভূমি

অনুমান অনুসারে, আমাদের কাছে প্রাকৃতিক এন এবং 0 ≤ x <1 এর জন্য এফ (এন + এক্স) = এফ (এন) + (এফ (এন + 1) - এফ (এন)) এক্স রয়েছে । যেহেতু এফ (এন + 1) = এফ (এন) + এফ (এন - 1) , এটি এফ (এন + এক্স) = এফ (এন) + এফ (এন - 1) এক্স হিসাবে আবার লেখা যেতে পারে ।

তদ্ব্যতীত, চ্যালেঞ্জের নির্দিষ্ট ক্ষেত্রে ব্যবহৃত সূচকটি একটি ফাংশনকে f (n) = F (n + 1) সংজ্ঞায়িত করে (যেখানে F স্বাভাবিক ফিবোনাচি ফাংশন, যেমন, এফ (0) = 0 ), সুতরাং আমরা সূত্রটি পাই f (n + X) = এফ (ঢ + 1 টি) + + এফ (ঢ) এক্স

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

,‘ḞÆḞḅ%1$  Main link. Argument: n + x

 ‘         Increment; yield n + 1 + x.
,          Pair; yield [n + x, n + 1 + x].
  Ḟ        Floor; yield [n, n + 1].
   ÆḞ      Fibonacci; yield [F(n), F(n + 1)].
      %1$  Modulus 1; yield (n + x) % 1 = x.
     ḅ     Unbase; yield F(n)x + F(n + 1).

0

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

48

{$/=(1,1,*+*...*)[$_,$_+1];$0+($_-.Int)*($1-$0)}

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

38

sub f(\n){3>n??max 1,n!!f(n-1)+f(n-2)}

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

সম্প্রসারিত:

48

{
  $/ =          # store here so we can use $0 and $1
  (
    1,1,*+*...* # Fibonacci sequence
  )[
    $_,         # get the value by using floor of the input
    $_ + 1      # and get the next value
  ];

    $0            # the first value from above
  +
    ( $_ - .Int ) # the fractional part of the input
  *
    ( $1 - $0 )   # the difference between the two values in the sequence
}

( $0এবং $1এর সংক্ষিপ্ত রূপ $/[0]এবং$/[1] )

38

sub f (\n) {
    3 > n           # if n is below 3
  ??
    max 1, n        # return it if it is above 1, or return 1
                    # if it was below 1, the answer would be 1
                    # the result for numbers between 1 and 3
                    # would be the same as the input anyway
  !!
    f(n-1) + f(n-2) # the recursive way to get a fibonacci number
}

এটি অন্যান্য পাইথন এবং জাভাস্ক্রিপ্ট সমাধান দ্বারা অনুপ্রাণিত হয়েছিল


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