ফিবোনাচি নম্বরগুলির মধ্যে


20

চ্যালেঞ্জ

একটি পূর্ণসংখ্যার ইনপুট দেওয়া হয়েছে, প্রথম ফিবোনাচি নম্বরটি ফিরিয়ে দিন যা সেই ফিবোনাচি সংখ্যার সূচকের সাথে নিজের মধ্যে ইনপুট রয়েছে (আপনাকে সূচকগুলি 0 বা 1 এ শুরু হয় - তবে আপনার উত্তরটিতে কোনটি উল্লেখ করুন)। উদাহরণস্বরূপ, যদি 12 ইনপুট দেওয়া, প্রোগ্রাম ফিরে আসবে 26: 121393যেমন 12 নম্বর (মধ্যে পাওয়া যায় 12 1393) এবং ফিবানচি সংখ্যার সূচক 26 হয়।

উদাহরণ

ইনপুট দেওয়া হয়েছে:

45

আপনার প্রোগ্রাম আউটপুট করা উচিত:

33: 3524578

ইনপুট:

72

আউটপুট:

54: 86267571272

ইনপুট:

0

আউটপুট:

0: 0

ইনপুট:

144

আউটপুট:

12: 144

স্কোরিং

এটি , তাই প্রতিটি ভাষার সংক্ষিপ্ত উত্তর জিততে পারে।


আমরা কি এর পরিবর্তে 1-ইনডেক্সিং চয়ন করতে পারি?
মিঃ এক্সকডার

1
সদৃশ নয়, তবে এই চ্যালেঞ্জের খুব কাছে ।
লিন

1
ফিবোনাকির ক্রমটি স্বাভাবিক কিনা তা নিয়ে গণিতে থ্রোড (এই প্রশ্নটি এটি অনুমান করে)।
অ্যাডমবর্কবার্ক

1
আমাদের কি পৃথককারী হিসাবে কোলন ব্যবহার করতে হবে? আমরা কি একটি অ্যারে / তালিকা আউটপুট করতে পারি?
শেগি

উত্তর:


8

জেলি , 10 বাইট

0ÆḞ©w¥1#;®

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

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

0ÆḞ©w¥1#;®  Main link. Argument: n

0           Set the return value to 0.
       #    Call the second link to the left with arguments k = 0, 1, 2, ... until
      1     one match has been found.
     ¥        Combine the two links to the left into a dyadich chain.
 ÆḞ             Compute the k-th Fibonacci number...
   ©              and copy it to the register.
    w           Yield 1 if n occurs inside the Fibonacci number, 0 otherwise.
         ®  Yield the value stored in the register.
        ;   Concatenate the index and the Fibonacci number.

আপনি আমার মত একই কৌশল ব্যবহার করেছেন। :)
এরিক আউটগল্ফার

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

এটি পোস্ট করেনি, তবে সাধারণত আমিও ব্যবহার করি না D...
এরিক দ্য আউটগোল্ফার


4

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

{first :kv,/$_/,(0,1,*+*...*)}

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

firstএমন একটি ক্রিয়া যা একটি ক্রমটির প্রথম উপাদানটি দেয় যা একটি পরীক্ষায় পাস করে, এবং এটি স্বাচ্ছন্দ্যে একটি :kvবিশেষণ নেয় যা এটিকে কী (সূচক) এবং মিলের মান উভয়ই ফিরিয়ে দিতে বলে tells


ধরে নেওয়া যাক আপনি একটি পেয়ার অবজেক্ট ফিরিয়ে দিতে পারবেন , আপনি এর :pপরিবর্তে অ্যাডভার্টটি ব্যবহার করতে পারেন :kv
ব্র্যাড গিলবার্ট 2

3

ব্যাচ, 104 বাইট

@set/an=x=0,y=1
:l
@call set t=%%x:%1=%%
@if "%t%"=="%x%" set/an+=1,x+=y,y=x-y&goto l
@echo %n%: %x%

n=0..45ব্যাচের পূর্ণসংখ্যার গাণিতিকের সীমাবদ্ধতার কারণে কাজ করে । ব্যাখ্যা: ব্যাচ নেই একটি বিল্ট-ইন ম্যাচ পরীক্ষা, কিন্তু এটা একটি অপারেটর আছে যা অন্য আক্ষরিক স্ট্রিং সঙ্গে আক্ষরিক স্ট্রিং প্রতিস্থাপন করতে পারেন আছে, তাই উদাহরণস্বরূপ if "%s:l=%"=="%s%"সত্য হলে %s%খালি না থাকে কিন্তু ধারণ করে না lcallএরপরে ব্যবহারটি হ'ল %1প্রতিস্থাপন অপারেটরে (ইনপুট) প্রতিস্থাপনের কৌশল, তবে callনিয়ন্ত্রণ ফ্লো স্টেটমেন্টগুলিতে কাজ করে না সুতরাং মধ্যবর্তী অস্থায়ী অ্যাসাইনমেন্ট প্রয়োজন।



2

জাভাস্ক্রিপ্ট ES6, 68 টি অক্ষর

n=>eval('for(q=x=0,y=1;!`${x}`.match(n);++q)[x,y]=[y,x+y];q+": "+x')

টেস্ট:

f=n=>eval('for(q=x=0,y=1;!`${x}`.match(n);++q)[x,y]=[y,x+y];q+": "+x')
console.log([45,72,0,144].map(f).join`
`)


2

পাইথন 3, 76 বাইট

f=lambda n,l=[1,0]:str(n)in str(l[1])and(len(l)-2,l[1])or f(n,[l[0]+l[1]]+l)


1

ডায়ালগ এপিএল, 39 বাইট

{⍺←0⋄∨/(⍕⍵)⍷⍕x←1∧+∘÷/0,⍺/1:⍺,x⋄(1+⍺)∇⍵}

লেজ পুনরাবৃত্তি ব্যবহার। Attempt২ চেষ্টা করবেন না, এটি আপনার মেশিনটি ভেঙে দেবে কারণ এটি প্রতিটি কলটিতে ফিনোনাচি পুনরায় গণনা করে।

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




1

আর, 65 বাইট

f=function(x,n=1,a=1,b=0)`if`(grepl(x,b),c(b,n-1),f(x,n+1,a+b,a))

ফিবনুমস জেনারেট করার জন্য স্ট্যান্ডার্ড পুনরাবৃত্তি, তবে ভিত্তি করে টার্মিনেট পরিবর্তে পরিবর্তিত হয় n, যখন রেজেক্সের সাথে bমেলে x। এটি আসলে আশ্চর্যজনকভাবে ভাল কাজ করে। আমি ধরে নিয়েছি যে সংখ্যার সাথে রেজেেক্স ব্যবহার করার জন্য তাদের স্ট্রিংয়ে রূপান্তর করতে প্রচুর ঝামেলা দরকার হবে, তবে এটি প্রয়োজনীয় মনে হয় না :)

এই, 1 ধাপে পুনরাবৃত্তির অতিরিক্ত বাড়াবাড়ি করে ফেলা উপর চেক করে গেছে bপরিবর্তে aএবং তারপর substracting 1থেকে n। এটি f(0)সঠিকভাবে কাজ করে তা নিশ্চিত করা ।

1001ম্যাকিন্টের কারণে ইনপুট ছাড়িয়ে গেলে এটি বেশিরভাগ মানের জন্য ব্যর্থ হয় । আমরা যদি প্রতিস্থাপন করি aএবং বড় bচিহ্নগুলির জন্য, এটি উচ্চতর ইনপুটগুলির জন্য কাজ করে (বর্তমান পরীক্ষাটি এখানে রয়েছে x = 11451)

f=function(x,n=1,a=gmp::as.bigz(1),b=gmp::as.bigz(0))`if`(grepl(x,b),c(b,n-1),f(x,n+1,a+b,a))

1

জাভাস্ক্রিপ্ট ES6, 79 78 75 বাইট

-1 বাইট স্টেপ হেন

নীল দ্বারা -3 বাইট

i=>eval('d=a=b=1;while(!~(a+"").indexOf(i)){c=b;b=a+b;a=c;‌​d++};d+": "+a')

1
আপনি বাইট সংরক্ষণ করার eval()পরিবর্তে ব্যবহার করতে পারেন { return}এবং t=যেহেতু আপনি পুনরাবৃত্তি ব্যবহার করছেন না আপনি তা বাদ দিতে পারেন :i=>eval('d=a=b=1;while(!~(a+"").indexOf(i+""){c=b;b=a+b;a=c;d++};d+": "+a')
স্টিফেন

1
String.prototype.indexOfএর পরামিতিটি স্বয়ংক্রিয়ভাবে স্ট্রিংয়ে রূপান্তরিত হয়, এটি স্পষ্টভাবে করার দরকার নেই। এছাড়াও আপনি @ স্টেপহেনের টাইপগুলি অনুলিপি করেছেন বলে মনে হচ্ছে (আপনার (s এর চেয়ে বেশি )এস রয়েছে)।
নিল

@ নীল আমার খারাপ কাজ করেছে
স্টিফেন



1

পিএইচপি, 80 বাইট

<?php for($a=1,$b=$n=0;strpos($a=-$a+$b=$a+$b,"$argv[1]")<-1;$n++);echo"$n: $a";

স্ক্রিপ্টটি বেশ সোজাসাপ্টা, কেবলমাত্র ক্রমটির বর্তমান এবং পরবর্তী শর্তাদি $ a এবং $ b জুড়ে সংরক্ষণ করে। 0 এর 0 তম মেয়াদের জন্য অনুমতি দেওয়ার জন্য, প্রথমে and a এবং $ b যথাক্রমে -1 তম (1) এবং 0 তম শব্দ (0) এর জন্য নির্ধারিত মানগুলি নির্ধারিত হয়।

উভয় মানই একক অভিব্যক্তিতে পুনরায় গণনা করা হয়, যা একটিতে দুটি কার্য; কার্যকরভাবে:

$b = $a + $b; // The next term is the sum of the two previous terms
$a = $b - $a; // The current term is now recalculated from the next and the previous

যদি ইনপুট মানটি শুরুর সাথে মিলে যায় তবে স্ট্রপোজ () ফাংশনটি 0 (যা মিথ্যা এবং মিথ্যা নেতিবাচক দেয়) ফিরে আসবে, তবে পিএইচপি-র ওয়ান্ডারফুল ওয়ার্ল্ডে যদিও false == 0সত্য এবং false < 0মিথ্যা, false < -1সত্য! এবং সুতরাং, এই তুলনাটি ব্যবহার করে তুলনা করে পাঁচটি বাইট সাশ্রয় করে !==false


1

জাপট , 17 14 বাইট

@ জাস্টিনমারিনারে ধন্যবাদ 3 বাইট সংরক্ষণ করা হয়েছে

_ŬøU}a@[XMgX]

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

ব্যাখ্যা

_ŬøU}a@[XMgX]      Implicit: U = input integer
      a@            For each integer X in [0, 1, 2, ...]:
        [XMgX]        take [X, Fibonacci(X)].
_    }a             Return the first pair where
 Å                    all but the first item
  ¬                   joined on the empty string (simply returns Fibonacci(X) as a string)
   øU                 contains U.
                    Implicit: output result of last expression

14 বাইট: _ŬøU}a@[XMgX]s1 q শেষ আইটেমটি পেতে ব্যবহার করা হচ্ছে, যা<space>s
জাস্টিন মেরিনার

@ জাস্টিনমারিনার এটি ... এটি প্রতিভা :-)
ইটিএইচ প্রডাকশন



0

পিএইচপি , 93 বাইট

for($a[0]=$a[1]++;!strpos(" $a[$i]","$argv[1]");$a[$i+2]=$a[$i+1]+$a[$i++]);echo"$i: $a[$i]";

ফিবোনাচি সিকোয়েন্সের মাধ্যমে সরল লুপ। আমাদের ইনপুট নম্বরটির জন্য চেক করা হয়েছে strpos(" $a[$i]","$argv[1]"); অতিরিক্ত স্থান হ'ল কারণ strposযদি 'সুই' স্ট্রিংয়ের শুরুতে পাওয়া যায় তবে মিথ্যা-ওয়াই ফিরে আসবে। আমরা শেষ করি যদি ইনপুট পাওয়া যায় এবং প্রয়োজনীয় স্ট্রিং প্রতিধ্বনি হয়।

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


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