নবম ফিবোনাচি নাম্বার সহ নবম ফিবোনাচি নম্বর প্রিন্ট করুন!


22

চ্যালেঞ্জ

আপনাকে অবশ্যই এমন একটি প্রোগ্রাম লিখতে হবে যা ইতিবাচক পূর্ণসংখ্যাকে nইনপুট হিসাবে গ্রহণ করে এবং থাই nফিবোনাচি সংখ্যাটি ( nআস্তে আস্তে Fib # হিসাবে সংক্ষিপ্ত) আউটপুট দেয় যা থাই ফাইবকে একটি সাবট্রিং হিসাবে অন্তর্ভুক্ত করে। এই চ্যালেঞ্জের উদ্দেশ্যে, ফিবোনাচি ক্রমটি একটি দিয়ে শুরু হয় 1

এখানে কয়েকটি উদাহরণ রয়েছে যা আপনি পরীক্ষার কেস হিসাবে ব্যবহার করতে পারেন, বা চ্যালেঞ্জটি পরিষ্কার করার জন্য উদাহরণ হিসাবে (পরবর্তীকালের জন্য, দয়া করে আপনি কী অস্পষ্ট বলে তা বর্ণনা করে নীচে একটি মন্তব্য লিখুন)।

n=1
Fib#s: 1
       ^1 1st Fib# that contains a 1 (1st Fib#)
Output: 1

n=2
Fib#s: 1, 1
       ^1 ^2 2nd Fib# that contains a 1 (2nd Fib#)
Output: 1

n=3
Fib#s: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233
             ^1              ^2                   ^3 3rd Fib# that contains a 2 (3rd Fib#)
Output: 233

n=4
Output: 233

n=5
Output: 6765

n=6
Output: 28657

n=7
Output: 1304969544928657

n=8
Output: 14472334024676221

n=9
Output: 23416728348467685

n=10
Fib#s: 1, ..., 34, 55, 89, ..., 63245986, 102334155, 165580141, ..., 2880067194370816120, 4660046610375530309
                   ^1                     ^2         ^3                                   ^10 10th Fib# that contains a 55 (10th Fib#)
Output: 4660046610375530309

সর্বদা হিসাবে, এটি , তাই সম্ভাব্য সর্বনিম্নতম বাইট গণনার জন্য যান।

যদি কিছু বিভ্রান্ত / অস্পষ্ট হয় তবে দয়া করে একটি মন্তব্য দিন।

(এই চ্যালেঞ্জটি আমার পোস্ট করা অন্য চ্যালেঞ্জের ভিত্তিতে তৈরি: এনটি থাকা নবম প্রাইম প্রিন্ট করুন )


3
আমি টেস্টকেসটি অন্তর্ভুক্ত করার প্রস্তাব দিই n=5, কারণ আমি কেবল একটি নির্বোধ ত্রুটি করেছি যেখানে আমি একটি চেক লিখেছি যা একটি সংখ্যাকে বহুবার গণনা করেছে যদি এতে একাধিকবার স্ট্রিং থাকে। n=5কারণ এটি ধরা হবে 55
janর্জন জোহানসেন

2
@ অফিসিয়ালাইম আমি খুব বেশি সংখ্যক আশা করা যুক্তিসঙ্গত বলে মনে করি না। আমার সমাধান টিআইও-তে কাজ করে n=25(আউটপুটটি 1186 ডিজিট রয়েছে), তারপরে মারা যায় n=26(আমার নিজের ল্যাপটপে 3085 ডিজিট সংকলিত)। যখনই fib(n)আরও একটি অঙ্ক পাবে (যেমনটি প্রত্যাশা করবে) অসুবিধা হতে পারে বলে মনে হচ্ছে । পরবর্তী জাম্প, 31, এর চূড়ান্ত আউটপুটে 12990 সংখ্যা রয়েছে।
janrjan জোহানসেন

1
হ্যাঁ। হাঃ হাঃ হাঃ! আমার অজগর সমাধানটি এন> 6 এর জন্য আটকে যায় কারণ একটি পুনরাবৃত্ত ফাংশন রয়েছে যা লুপে বহুবার ডাকা হয়। : ডি
অফিসিয়ালাইম

1
@ আফিসিয়ালাইম ঠিক আছে, সরাসরি পুনরাবৃত্তি দিয়ে ফিবোনাকিকে সংজ্ঞায়িত করার সময় এক্সফোনেনশিয়াল ব্লুআপ একটি সমস্যা। এমনকি এটি ছাড়া আপনি পাইথনের পুনরাবৃত্তির সীমাটি শীঘ্রই আঘাত করতে পারেন।
janrjan জোহানসেন

1
@ শেগি: এটিই আমি ধারাবাহিকভাবে বোঝাতে চাইছিলাম: যখন 0 হল 0 তম ফিবোনাচি সংখ্যা, তখন 1 হ'ল প্রথম ("1 তম"?) ফিবোনাচি নম্বর।
শ্রীভাত্সআর

উত্তর:


12

হাস্কেল , 85 84 বাইট

সম্পাদনা করুন:

  • -১ বাইট: লাইকনি সংক্ষিপ্ত হয়ে গেছে l
  • টাইপ ( x>=sজন্য x<=s) ব্যাখ্যা।

fনেয় Intএবং ফেরত দেয় a String

l=0:scanl(+)1l
m=show<$>l
f n|x<-m!!n=[y|y<-x:m,or[x<=s|s<-scanr(:)""y,x++":">s]]!!n

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

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

  • lফিবোনাচি সংখ্যাগুলির অসীম তালিকা, এর আংশিক যোগফল হিসাবে পুনরাবৃত্তভাবে সংজ্ঞায়িত 0:1:l। এটি সূচনা হয় 0কারণ তালিকা 0-সূচকযুক্ত। mস্ট্রিংগুলিতে রূপান্তরিত একই তালিকা।
  • ইন f:
    • nহ'ল ইনপুট নম্বর এবং xএটি nফাইওনাচি নম্বর (এর স্ট্রিং) ।
    • বাইরের তালিকা অনুধাবনীতে, yএটি একটি স্ট্রিং xহিসাবে রয়েছে কিনা তার জন্য একটি ফিবোনাচি নম্বর পরীক্ষা করা হয় । পাসিং yগুলি তালিকায় সংগ্রহ করা হয় এবং !!nআউটপুট দেওয়ার জন্য ফাইনালের সাথে সূচিযুক্ত হয় । xশেষে অতিরিক্ত দুটি বাইট ব্যবহার করে সংরক্ষণের জন্য পরীক্ষাগুলিতে একটি অতিরিক্ত চাপ দেওয়া হয় !!(n-1)
    • yকয়েকবার গণনা এড়াতে , প্রতিটিটির পরীক্ষাগুলি yগুটিয়ে রাখা হয় orএবং অন্য একটি তালিকা বোধগম্য হয়।
    • অভ্যন্তরীণ তালিকা অনুধাবনে, sপ্রত্যয়গুলির মাধ্যমে পুনরাবৃত্তি করে y
    • পরীক্ষা করেন যে, xএকটি প্রিফিক্স s, আমরা কিনা পরীক্ষা x<=sএবং x++":">s। ( ":"কিছুটা নির্বিচারে তবে এটি কোনও সংখ্যার চেয়ে বড় হওয়া দরকার))

1
l=0:scanl(+)1lএকটি বাইট সংরক্ষণ করে।
লাইকনি


4

পাইথন 2 , 99 86 বাইট

  • আরজান জোহানসেন 7 টি বাইট সংরক্ষণ করেছেন: দিয়ে শুরু b=i=x=-1 a=1এবং ছাড়ছেনx and
  • Orjan Johansen আবার 3 বাইট সংরক্ষণ করেছেন: f and n==2থেকেf*(n>2)
  • ফিলিপ নারদী বাটিস্তা 9 টি বাইট সংরক্ষণ করেছেন: অর্থনৈতিক অদলবদল a,b=a+b,aশর্টহ্যান্ড f-=str(x)in str(a), সঙ্কুচিত(n<2)*f
  • ovs 13 বাইট সংরক্ষণ করেছে: পাইথন 3 থেকে পাইথন 2 এ রূপান্তর।
f=n=input()
b=i=x=-1
a=1
while(n>2)*f:i+=1;a,b=a+b,a;x=[x,a][i==n];f-=`x`in`a`
print a

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

ব্যাখ্যা:

f=n=int(input())                 # f is number of required numbers

b=i=x=-1                         # i is index(counter) set at -1
                                 # In Two-sided fibonacci, fib(-1) is 1 
                                 # and b(fib before it) i.e. fib(-2) is -1
                                 # Taking advantage of all -1 values, x is 
                                 # also set to -1 so that the `if str(...`
                                 # portion does not execute until x is set a 
                                 # value(i.e. the nth fibonacci) since there 
                                 # is no way -1 will be found in the number 
                                 # (ALL HAIL to Orjan's Genius Idea of using 
                                 # two-sided fibonacci)      

a=1                              # fib(-1) is 1


while(n>2)*f:                    # no need to perform this loop for n=1 and 
                                 # n=2 and must stop when f is 0

 i+=1                            # increment counter

 b,a=a,a+b                       # this might be very familiar (fibonacci 
                                 # thing ;))                         

 x=[x,a][i==n]                   # If we have found (`i==n`) the nth 
                                 # fibonacci set x to it

 f-=`x`in`a`                     # the number with required substring is 
                                 # found, decrease value of f

print a                          # print required value

পাইথন 3 , 126 120 113 112 110 101 99 বাইট

f=n=int(input())
b=i=x=-1
a=1
while(n>2)*f:i+=1;a,b=a+b,a;x=[x,a][i==n];f-=str(x)in str(a)
print(a)

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


1
শুরু করে b=i=x=-1 a=1এবং ড্রপ করে আপনি আরও 7 বাইট পরিত্রাণ পেতে পারেন x and । (মূলত দ্বি-পার্শ্ববর্তী ফিবোনাচি ক্রম -১, 1, 0, 1, 1, 2, .... এর 3 পদক্ষেপ আগে শুরু করা)
janর্জন জোহানসেন

1
আপনি শেষে একটি স্থান রেখে গেছেন -1: পি
janrjan জোহানসেন

1
আর্ম ব্লাশ । এছাড়াও, আমি `এবং n> 2` থেকে মুক্তি পেতে চাই তবে মনে হয় এটির n==2জন্য বিশেষ চিকিত্সা দরকার। তবে এটি সংক্ষিপ্ত করা যেতে পারে *(n>2)
janrjan জোহানসেন

1
এটিকে ৮৮ বাইটে নামিয়ে দেওয়া হয়েছে , কিছু পরিবর্তন অজগর ২ এ একচেটিয়া। তবে বাকিরা অজগর 3 তেও কাজ করবে
ফিলিপ

1
অজগর 3 এর জন্য, আপনি এখনও 9 বাইট গল্ফ করতে পারেন: এখানে
ফিলিপ নার্দি বাতিস্তা

4

জাভা, 118 111 বাইট

i->{long n=i,p=0,q,c=1;for(;--n>0;p=c,c+=q)q=p;for(n=c;i>0;q=p,p=c,c+=q)if((""+c).contains(""+n))--i;return p;}

আমি ভাবতে থাকি ফিবোনাচি বিটের সদৃশ না করা সম্ভব হওয়া উচিত, তবে আমার সমস্ত প্রচেষ্টা একরকম আরও বেশি বাইটের ফলস্বরূপ।

উন্নতির জন্য কেভিনকে ধন্যবাদ ... অনুমান করুন এটি দেখায় এটি গল্ফ করার আমার প্রথম চেষ্টা ছিল :)


2
স্নিপেটস অনুমোদিত নয়। আপনার i->{long n=i,p=0,q,c=1;while(--n>0){q=p;p=c;c+=q;}n=c;while(i>0){if((""+c).contains(""+n))--i;q=p;p=c;c+=q;}return p;}
এটির

1
পিপিসিজিতে আপনাকে স্বাগতম! @ ওকক্স নির্দেশিত হিসাবে আপনি এটি একটি ল্যাম্বডায় পরিবর্তন করার পরে, আমি অবশ্যই বলব এটি একটি চিত্তাকর্ষক উত্তর। আমি দুপুরের খাবারের ঠিক এক ঘন্টা আগে এই চ্যালেঞ্জটি করার চেষ্টা করেছি এবং হাল ছেড়ে দিয়েছি। সুতরাং আমার কাছ থেকে +1 গল্ফ কিছু ছোট জিনিস: while(--n>0){q=p;p=c;c+=q;}হতে পারে for(;--n>0;p=c,c+=q)q=p;এবং n=c;while(i>0){if((""+c).contains(""+n))--i;q=p;p=c;c+=q;}হতে পারে for(n=c;i>0;q=p,p=c,c+=q)if((""+c).contains(""+n))--i;। (ইন মোট: i->{long n=i,p=0,q,c=1;for(;--n>0;p=c,c+=q)q=p;for(n=c;i>0;q=p,p=c,c+=q)if((""+c).contains(""+n))--i;return p;}( 111 বাইট )
কেভিন Cruijssen

2

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

{my@f=0,1,*+*...*;@f.grep(/$(@f[$_])/)[$_-1]}

$_ফাংশন যুক্তি হয়; @fঅলসভাবে উত্পাদিত ফিবোনাচি ক্রম।


2

জাভাস্ক্রিপ্ট (ES6), 96 93 92 90 86 বাইট

সিকোয়েন্সে 0 তম সংখ্যা সহ 0-সূচকযুক্ত 1। ক্রেপস আউট 14

f=(n,x=1,y=1)=>n?f(n-1,y,x+y):x+""
g=(n,x=y=0)=>x>n?f(y-1):g(n,x+!!f(y++).match(f(n)))

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

f=(n,x=1,y=1)=>n?f(n-1,y,x+y):x+""
g=(n,x=y=0)=>x>n?f(y-1):g(n,x+!!f(y++).match(f(n)))
oninput=_=>o.innerText=(v=+i.value)<14?`f(${v}) = ${f(v)}\ng(${v}) = `+g(v):"Does not compute!"
o.innerText=`f(0) = ${f(i.value=0)}\ng(0) = `+g(0)
<input id=i min=0 type=number><pre id=o>


ব্যাখ্যা

অনুসরণ করতে আপডেট করা সংস্করণ, যখন আমি এক মিনিট পাই।

f=...                   :Just the standard, recursive JS function for generating the nth Fibonacci number
g=(...)=>               :Recursive function with the following parameters.
n                       :  The input integer.
x=0                     :  Used to count the number of matches we've found.
y=0                     :  Incremented on each pass and used to generate the yth Fibonacci number.
x>n?                    :If the count of matches is greater than the input then
f(y-1)                  :    Output the y-1th Fibonacci number.
:                       :Else
g(...)                  :    Call the function again, with the following arguments.
n                       :      The input integer.
x+                      :      The total number of matches so far incremented by the result of...
RegExp(f(n)).test(f(y)) :        A RegEx test checking if the yth Fibonacci number, cast to a string, contains the nth Fibonacci number.
                        :        (returns true or false which are cast to 1 and 0 by the addition operator)
y+1                     :      The loop counter incremented by 1

আপনার উত্তর উদাহরণ থেকে বিভিন্ন আউটপুট প্রদান বলে মনে হচ্ছে।
ericw31415

@ এরিকউ৩১৪১৫১, কারণ এটি 0-সূচকযুক্ত।
শেগি

আমি স্পষ্টভাবে লিখেছি যদিও এটি লিখেছিল: "এই চ্যালেঞ্জের উদ্দেশ্যে, ফিবোনাচি ক্রম 1 দিয়ে শুরু হয়।"
ericw31415

@ এরিক ৩৩১৪১৫: এবং আমার ক্রমটি 1 দিয়ে শুরু হবে, এটি কেবল 0-সূচকযুক্ত; অনুক্রমের 0 তম এবং 1 ম সংখ্যাগুলি 1, দ্বিতীয়টি 2 টি, 3 য়টি 3, 4 র্থ 5, 5 ম 8, এবং আরও রয়েছে।
শেগি



1

গণিত, 85 বাইট

(i=ToString;f=Fibonacci;For[n=t=0,t<#,If[i@f@n++~StringContainsQ~i@f@#,t++]];f[n-1])&

ইনপুট

[10]

@ জংহওয়ান মিন থেকে -4 বাইট

আউটপুট

4660046610375530309


2
অদ্ভুত দেখাচ্ছে তবে f@i@n++সম্পূর্ণ বৈধ, 1 বাইট হ্রাস পাচ্ছে। Forপরিবর্তে ব্যবহার করলে While3 বাইট হ্রাস হয়। 85 বাইট:(i=ToString;f=Fibonacci;For[n=t=0,t<#,If[i@f@n++~StringContainsQ~i@f@#,t++]];f[n-1])&
জংহওয়ান মিন


1

আর, 77 72 বাইট

F=gmp::fibnum;i=0;d=n=scan();while(n)if(grepl(F(d),F(i<-i+1)))n=n-1;F(i)

এটি gmpফিবোনাচি নম্বরটির জন্য লাইব্রেরিটি ব্যবহার করে। প্রশ্নের মোটামুটি সোজাভাবে বাস্তবায়ন

F=gmp::fibnum;          # Alias Fibonacci function to F
i=0;                    # intitalise counter
d=n=scan();             # get n assign to d as well
while(n)               # loop while n
  if(grepl(F(d),F(i<-i+1)))  # use grepl to determine if Fib of input is in Fib# and increment i
     n=n-1;             # decrement n
F(i)                  # output result

কিছু পরীক্ষা

> F=gmp::fibnum;i=0;d=n=scan();while(n)if(grepl(F(d),F(i<-i+1)))n=n-1;F(i)
1: 2
2: 
Read 1 item
Big Integer ('bigz') :
[1] 1
> F=gmp::fibnum;i=0;d=n=scan();while(n)if(grepl(F(d),F(i<-i+1)))n=n-1;F(i)
1: 3
2: 
Read 1 item
Big Integer ('bigz') :
[1] 233
> F=gmp::fibnum;i=0;d=n=scan();while(n)if(grepl(F(d),F(i<-i+1)))n=n-1;F(i)
1: 10
2: 
Read 1 item
Big Integer ('bigz') :
[1] 4660046610375530309
> F=gmp::fibnum;i=0;d=n=scan();while(n)if(grepl(F(d),F(i<-i+1)))n=n-1;F(i)
1: 15
2: 
Read 1 item
Big Integer ('bigz') :
[1] 1387277127804783827114186103186246392258450358171783690079918032136025225954602593712568353

0

Clojure, 99 বাইট

(def s(lazy-cat[0 1](map +(rest s)s)))#(nth(filter(fn[i](.contains(str i)(str(nth s %))))s)(dec %))

একটি প্রাথমিক সমাধান, ফিবোনাচি সংখ্যাগুলির একটি অসীম ক্রম ব্যবহার করে s


0

সি #, 35 বাইট

int u=1,b=1;for(;b<n;){b+=u;u=b-u;}

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

int n=int.Parse(t2.Text);int u=1,b=1;for(;b<n;){b+=u;u=b-u;t.Text+=b.ToString()+" ";}if(b==n){t.Text+="true";}

1
প্রোগ্রামিং ধাঁধা এবং কোড-গল্ফ স্বাগতম। উত্তরগুলি একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন হওয়া দরকার, যখন আপনি কেবল একটি স্নিপেট সরবরাহ করেছিলেন। বিশেষত, আপনি ধরে নিচ্ছেন যে ইনপুটটি রয়েছে nএবং আপনি কেবল আউটপুটটি ভিতরে রেখেছেন b(আমার মনে হয়)। আপনি লিখতে পারেন যে nতর্কগুলি এবং রিটার্ন হিসাবে গ্রহণ করুন b... এছাড়াও, আমি নিশ্চিত যে চ্যালেঞ্জগুলি যা জিজ্ঞাসা করে তা আপনি গণনা করছেন না pretty আসলে, আপনি কী কম্পিউটিং করছেন তা আমার কোনও ধারণা নেই। আপনি কি দয়া করে এমন কিছু কোড ব্যবহার করতে পারবেন যা আমরা আপনার সমাধান যাচাই করতে চালাতে পারি? (আপনার "এটি চেষ্টা করুন" যেমন চালানো যায় না ..)
দাদা

0

নিউস্ট্যাক , 14 বাইট

N∞ ḟᵢfi 'fif Ṗf⁻

ভাঙ্গন:

N∞              Add all natural numbers to the stack
   ḟᵢ           Define new function will value of input
     fi          Get the n'th Fibonacci number for ever element n
       'fif      Remove all elements that don't contain the (input)'th Fibonacci number 
           Ṗf⁻  Print the (input-1)'th element

ইংরাজীতে: (3 এর ইনপুট উদাহরণ সহ)

N∞: প্রাকৃতিক সংখ্যাগুলির একটি তালিকা তৈরি করুন [1,2,3,4,5,6...]

ḟᵢ: ভেরিয়েবল ইনপুট সংরক্ষণ করুন f [1,2,3,4,5,6...]

: তালিকাটি ফিবোনাচি সংখ্যায় রূপান্তর করুন [1,1,2,3,5,8...]

'fif: সমস্ত fফাইবোনাচি নম্বরযুক্ত উপাদান রাখুন[2,21,233...]

Ṗf⁻: f-1তম উপাদানটি মুদ্রণ করুন (0-ভিত্তিক সূচকের কারণে -1)233


গিটহাবটিতে কেবল একটি রিডমি এবং টিউটোরিয়াল রয়েছে বলে মনে হয়। একটি বাস্তবায়ন উল্লেখ করা হয়, তবে এটি লিঙ্কযুক্ত নয়। যদিও পিপিসিজি এখন ভাষাগুলিকে চ্যালেঞ্জের চেয়েও নতুন মঞ্জুরি দেয় তবে আমি বিশ্বাস করি যে আমাদের এখনও একটি প্রকাশ্যে উপলভ্য বাস্তবায়ন প্রয়োজন।
janrjan জোহানসেন

@ আরজান জোহেনসেন, আহা আমাকে স্মরণ করিয়ে দেওয়ার জন্য ধন্যবাদ। আমি যে আপলোড করতে ভুলে গেছি! এক মিনিটের মধ্যে উঠবে।
গ্রাভিটন

আপনার বাস্তবায়নটি ইউটিএফ -8 ব্যবহার করছে বলে মনে হচ্ছে, এটি আসলে 28 বাইট (হ্যাশেল সেটিংটি মনে করবেন না, আমি কেবল বাইটগুলি গণনা করতে টিআইও ব্যবহার করছি)। জেলি ইত্যাদির মতো ভাষাগুলির এই কারণে তাদের নিজস্ব কোড পৃষ্ঠা রয়েছে।
janrjan জোহানসেন

@ আরজান জোহেনসেন টাচ, আমি কথা বলার সাথে সাথে নিজের এনকোডিংয়ের জন্য একটি টেবিল বিতরণের কাজ করছি।
গ্রাভিটন

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