আইকানোবিফ সিকোয়েন্স আউটপুট করুন


22

nOEIS এ A014258 হিসাবে নথিভুক্ত আইকানোবিফ সিকোয়েন্সে এই ক্রমটি আংশিক সংখ্যায় আউটপুট বা ফিরিয়ে আনবে এমন একটি প্রোগ্রাম বা নামকৃত ফাংশন লিখুন । নোট করুন যে অনুক্রমের ( 0) এর কেবল জিরোথ উপাদানটি nশূন্য হলে মুদ্রণ করা হবে।

ক্রমটি স্ট্যান্ডার্ড ফিবোনাচি সিক্যুয়েন্সের মতো শুরু করে তৈরি করা হয় তবে পূর্ববর্তী দুটি সংখ্যা যুক্ত করার পরে আপনি ফলাফলটি উল্টাতে এবং কোনও শীর্ষস্থানীয় শূন্যগুলি বাদ দিন। একটি আকর্ষণীয় সত্য, আমার কাছে কমপক্ষে, এই ক্রমটি কঠোরভাবে বাড়ছে না (নীচের তালিকাটি দেখুন)। এটি ফিবোনাচি অনুক্রমের চেয়েও বড় বা সমান বলে মনে হয়।

আপনার প্রোগ্রামের ইনপুট অবশ্যই একটি পূর্ণসংখ্যা হতে হবে।

ক্রমটির প্রথম 20 নম্বরগুলি এখানে আপনার দেখার আনন্দের জন্য সরবরাহ করা হয়েছে:

0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769

স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

সংক্ষিপ্ততম প্রোগ্রামের জয়।

সম্পাদনা: ক্রমটি জিরোথ উপাদান দিয়ে শুরু হয় এবং nশূন্য হলে অন্তর্ভুক্ত করা উচিত তা স্পষ্ট করার জন্য একটি নোট যুক্ত করেছে ।

IO সম্ভাবনার উদাহরণ:

0    ->    0
1    ->    0 1
6    ->    0 1 1 2 3 5 8
17   ->    [0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297]

এখন যেহেতু বেশ কয়েকটি উত্তর রয়েছে, নীচে পাইথন 2 এ আমার বাস্তবায়নগুলি যা আমি মার্কআপ দিয়ে আড়াল করতে কঠোর পরিশ্রম করেছি:

পুনরাবৃত্ত:

আমার প্রাথমিক প্রোগ্রামটি বন্ধ করুন। 73 বাইট। এই প্রোগ্রামটিও লক্ষ করা উচিত
 স্ট্যাকের ওভারফ্লোতে পৌঁছতে পারে না। এটি 10 ​​সেকেন্ডেরও কম সময়ে এন = 5000 ধরে চলে।

i,a,b=input(),0,1
print a
while i:print b;i,a,b=i-1,b,int(str(a+b)[::-1])

রিকার্সিভ:

# দ্রষ্টব্য যে এই nনতুন প্রান্তগুলি প্রিন্ট করে । 64 বাইট।
 বৃহত্তর এন এর মানগুলির জন্য একটি স্ট্যাক ওভারফ্লো ত্রুটিকে আঘাত করবে।

def f(n,i=0,j=1):print i,n and f(n-1,j,int(str(i+j)[::-1]))or'';


8
ফিবোনাচি অনুক্রমের সাথে কিছু করার আগে ভাবার জন্য +1 যা ইতিপূর্বে করা হয়নি
স্তর নদী সেন্ট

@ স্টিভেরিলিল আমি স্থির করেছিলাম যে আমি আরও একটি চ্যালেঞ্জ তৈরি করতে চাই, তারপরে অনুক্রমটি কী হবে তা দেখার সিদ্ধান্ত নিয়েই শুরু করেছিলাম, আমি এটি কল্পনা করার পরে। তাই আমি একটি প্রোগ্রাম লিখেছি। তারপরে আমি OEIS অনুসন্ধান করে চ্যালেঞ্জটি করেছিলাম made
mbomb007

এটি কি এই প্রশ্ন দ্বারা অনুপ্রাণিত হয়েছিল ?
জন

@ জন না। আমি এটি আগে দেখেছি, তবে সেই চ্যালেঞ্জটি এই সাইটের সবচেয়ে সাধারণ চ্যালেঞ্জগুলির মধ্যে একটি। না, আমি আমার কল্পনা থেকে খালি খাঁটি সংখ্যা তৈরি করেছি যা আমি চ্যালেঞ্জ হিসাবে ব্যবহার করতে পারি।
mbomb007

3
আমি মনে করি উত্তর গ্রহণের আগে আপনার আরও কিছুটা অপেক্ষা করা উচিত। উত্তরের কোনওটি পরিষ্কারভাবে অপরাজিত না (উদাহরণস্বরূপ, একটি 1 বাইট সমাধান), কমপক্ষে এক সপ্তাহ অপেক্ষা করার পরামর্শ দেওয়া হচ্ছে।
ডেনিস

উত্তর:


3

পাইথ, 17 15 14

Pu+Gs_`s>2GQU2

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

খুব বেসিক বাস্তবায়ন, range(2)ইনপুট সমান অনেকগুলি উপাদান দিয়ে শুরু হয় এবং যোগ করে, তারপরে অতিরিক্ত টুকরো টুকরো টুকরো টুকরো করে শেষ উপাদানটি ছেড়ে দেয়।

>বিপরীত জিনিসটি নির্দেশ করার জন্য @ জাকুবকে ধন্যবাদ জানাই Thanks

ব্যাখ্যা

Pu+Gs_`s>2GQU2    : Q = eval(input) (implicit)
P                 : all but the last element
 u         QU2    : reduce Q times starting with [0, 1]
  +G              : add to the previous result
       s>2G       : sum of the last two elements of G
    s_`           : int(reversed(repr(above value)))

4

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

a=0;b=1
exec"print a;a,b=b,int(str(a+b)[::-1]);"*-~input()

strব্যাকটিক্সের পরিবর্তে রূপান্তর করতে ব্যবহার করা হয় কারণ পাইথন 2 এ প্রচুর পরিমাণে শেষে একটি এল দিয়ে লেখা হয়। আমি একটি পুনরাবৃত্ত ফাংশন চেষ্টা করেছিলাম, তবে এটি আর দীর্ঘ হয়নি (61):

f=lambda n,a=0,b=1:-~n*[0]and[a]+f(n-1,b,int(str(a+b)[::-1]))

3

জুলিয়া, 79 বাইট

f=n->(t=[0,1];for i=2:n push!(t,t[i]+t[i-1]|>string|>reverse|>int)end;t[1:n+1])

এটি এমন একটি ফাংশন তৈরি করে যা কোনও পূর্ণসংখ্যাকে ইনপুট হিসাবে গ্রহণ করে এবং পূর্ণসংখ্যার অ্যারে প্রদান করে।

অবহেলিত + ব্যাখ্যা:

function f(n)
    # Start with the usual Fibonacci stuff
    t = [0,1]

    # Looooooooooooooop
    for i = 2:n
        # Compute the Iccanobif number by piping results
        iccanobif = t[i] + t[i-1] |> string |> reverse |> int

        # Jam it into t
        push!(t, iccanobif)
    end

    # Return the first n + 1
    t[1:n+1]
end

উদাহরণ:

julia> f(1)
2-element Array{Int64,1}:
 0
 1

julia> f(17)
18-element Array{Int64,1}:
      0
      1
      1
      2
      3
      5
      8
     31
     93
    421
    415
    638
   3501
   9314
  51821
  53116
 739401
 715297

3

টি-এসকিউএল, 149

খুব সোজা ফরোয়ার্ড ইনলাইন টেবিল ফাংশন যা পুনরাবৃত্ত সিটিই কোয়েরি ব্যবহার করে। যেমন এটি আইএনটি ব্যবহার করছে এটি 37 এ শীর্ষে আসবে big বিগিন্টের জন্য CAST- এ যুক্ত করা এটি আরও 63 এ যাওয়ার অনুমতি দেবে

create function i(@ int)returns table return with r as(select 0I,1N union all select n,reverse(i+n)+0from r)select 0n union all select top(@)n from r

এটি নিম্নলিখিত হিসাবে ব্যবহৃত হয়

select * from i(0)
n
-----------
0

(1 row(s) affected)

select * from i(1)
n
-----------
0
1

(2 row(s) affected)

select * from i(6)
n
-----------
0
1
1
2
3
5
8

(7 row(s) affected)

select * from i(17)
n
-----------
0
1
1
2
3
5
8
31
93
415
421
638
3501
9314
51821
53116
715297
739401

(18 row(s) affected)

3

কে, 25 23 বাইট

{-1_ x{x,.|$+/-2#x}/!2}

কোনও দুর্গন্ধযুক্ত লুপগুলিতে উদাহরণগুলির মধ্যে একটিগুলির একটি সাধারণ পরিবর্তন ।

বাক্যাংশটি .|$একটি সংখ্যাকে একটি স্ট্রিংয়ে ফেলে, এটিকে বিপরীত করে এবং তারপরে মূল্যায়ন করে।

সম্পাদনা:

আমার দিকের সীমানা অবস্থার দিকে Slালু মনোযোগ। এখন আরও সঠিক:

  {-1_ x{x,.|$+/-2#x}/!2}'0 1 6 10
(,0
 0 1
 0 1 1 2 3 5 8
 0 1 1 2 3 5 8 31 93 421 415)

সম্পাদনা 2:

(x+1)#-1_2 টি অক্ষর সংরক্ষণ করে এর সাথে প্রতিস্থাপন করা যেতে পারে । স্থানটি প্রয়োজনীয় কারণ অন্যথায় _xএকটি সনাক্তকারী হবে, যখন আমি চাই "ড্রপ" অপারেটর নামক একটি চলকটিতে প্রয়োগ করা x


2
ওপি অনুসারে আউটপুটটি শূন্যের সাথে শুরু হওয়া উচিত।
টানা উন্মাদ

সঠিক - এখন ঠিক করা উচিত।
জন

1
উত্তরটি পোস্ট করতে এখানে এসেছিলেন কেবলমাত্র আপনার সঠিক উত্তরটি দেখতে। সুন্দরভাবে সম্পন্ন.
tmartin

3

হাস্কেল, 64 49 বাইট

a!b=a:b!(read$reverse$show$a+b)
q n=0:take n(1!1)

ব্যবহারের উদাহরণ: q 15->[0,1,1,2,3,5,8,31,93,421,415,638,3501,9314,51821,53116]

এটি কীভাবে কাজ করে: !পুনরাবৃত্তভাবে আইকনোবিফ সংখ্যার একটি অসীম তালিকা তৈরি করে এটির প্রথম যুক্তি দিয়ে শুরু হয় (দ্বিতীয় যুক্তিটি পরবর্তী আইকনোবিফ নম্বর হতে হবে)। আইকনোবিফ তালিকা থেকে qপ্রথম nসংখ্যাটি নিয়ে শুরু করে 1, 1এবং এটিকে প্রেন্ডেন্ড করে 0


2

সিজেম, 18 বাইট

U1{_2$+sW%i}ri*;]p

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

U1                      e# First two numbers in the series
  {        }ri*         e# Run the loop input numbers times
   _2$+                 e# Get sum of last two numbers in the series
       sW%i             e# Convert to string, inverse and convert back to a number
                ;       e# Remove the last number to get only first n + 1 numbers.
                 ]p     e# Wrap all numbers in an array and print the array

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


2

জাভা - 126 124

আমি জাভা কিছুক্ষণ এই সাইটের চারপাশে দেখিনি ...

void f(int b){for(int c=0,d=1,g;b-->=0;d=Integer.valueOf(new StringBuilder(c+(c=d)+"").reverse()+""))System.out.println(c);}

f(5) কপি করে প্রিন্ট 0 1 1 2 3 5 8 31 93 421 415 638


আমিও গ্রহণ করব...System.out.println(c);
mbomb007

@ mbomb007 ধন্যবাদ! আমাকে 2 বাইট সংরক্ষণ করেছেন
টানা উন্মাদ

জাভাটির স্ট্রিং ম্যানিপুলেশন ব্যয়বহুল হওয়ায় আপনি সংখ্যার বিপরীতে সংখ্যাটি ব্যবহার করে সম্ভবত এটি সংক্ষিপ্ত করতে পারেন ।
mbomb007

আমি জানি এটা চেয়ে বেশি 1.5 বছর ধরে আপনাদের মাঝে, কিন্তু আপনি প্রতিস্থাপন 6 বাইট সংরক্ষণ করতে পারবেন Integer.valueOf(সঙ্গে new Long((এবং তারপর পরিবর্তন intকরার জন্য-লুপ longপাশাপাশি)। আপনি যদি এর পরিবর্তে কেবল পূর্ণসংখ্যার সাথে কাজ করতে পছন্দ করেন তবে এটি new Integer(তার চেয়েও কম Integer.valueOf(
কেভিন ক্রুইজসেন

2

এসডাব্লুআই-প্রোলগ, 141 131 121 বাইট

a(X,R):-X>1,A is X-1,a(A,B),reverse(B,[K,L|_]),W is K+L,name(W,Z),reverse(Z,Y),name(E,Y),nth0(X,R,E,B);X=1,R=[0,1];R=[0].

চলমান a(17,X).আউটপুট:

[0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297] 

a(10000,X).আমার কম্পিউটারে ফলাফল আউটপুট করতে প্রায় 10 সেকেন্ড সময় নেয় ।

সম্পাদনা করুন: উপরের 121 বাইট সংস্করণটি হ'ল একটি প্রাকটিক সংজ্ঞা = একটি লাইনার। পুরাতন 131 বাইট সংস্করণটি নিম্নলিখিত (এটি অবশ্যই চালানো উচিত p(17,X)):

a(0,[0]).
a(1,[1,0]).
a(X,[E|B]):-A is X-1,a(A,B),B=[K,L|_],W is K+L,name(W,Z),reverse(Z,Y),name(E,Y).
p(X,Y):-a(X,Z),reverse(Z,Y).

2

> <> (মাছ) 592 254 বাইট

সুপার গল্ফেড নয় (42/43 ফাঁকাগুলি যা কিছুই করে না এবং মোট 30 টি পুনর্নির্দেশ টোকেন), তবে এটি একটি আকর্ষণীয় অনুশীলন যা এটি প্রথম স্থানে কাজ করে।

10!/{:}0=?v/{1-}}:{+:0}!/a,:1%-:0=?!v~{:1!/$:@0=?!v$~}}:&{{&*\
/-$/    ;n/\oo", "n:    \       }+1{/     \$-1$*a /|.!20}}01@/
* :{:}(?v:{!":}-1!/$:@0=?!v$~{:}1!/$:@0=?!v$~}}}:&{{{&*:1%-*&{{&+}}{1+}02.
b .1 +bb   \      \$-1$*a /       \$-1$,a /
\*9{~~~{/

প্রাথমিক স্ট্যাকের মধ্যে পছন্দসই দৈর্ঘ্য সরবরাহ করে আপনি এটি এখানে পরীক্ষা করতে পারেন ।

সম্পাদনা: বদ্ধ গণনার চেয়ে অর্ধেক


2

পিএইচপি, 114 , 109 বাইট

function f($n){if($n==0)return 0;$f=[0,1];for($i=2;$i<=$n;++$i){$f[$i]=strrev($f[$i-1]+$f[$i-2]);}return $f;}

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

Ungolfed:

function f($n)
{
    if($n == 0) return 0;
    $f = [0, 1];
    for ($i=2; $i<=$n; ++$i){
        $f[$i] = strrev($f[$i-1] + $f[$i-2]);
    }
    return $f;
}

1

এক্সেল ভিবিএ, 279 বাইট

n = InputBox("n")
For i = 0 To n
If i < 2 Then
Cells(i + 1, 1) = i
ElseIf i > 6 Then
x = Cells(i, 1) + Cells(i - 1, 1)
l = Len(x)
v = CStr(x)
For j = 1 To l
r = r + Right(v, 1)
v = Left(v, l - j)
Next j
Cells(i + 1, 1) = r
r = ""
Else
Cells(i + 1, 1) = Cells(i, 1) + Cells(i - 1, 1)
End If
Next i

ম্যাক্রো চালানো ব্যবহারকারীকে n এর জন্য একটি মান লিখতে অনুরোধ করবে।

ফলাফলগুলি পরে কলাম এ-সারি একের পর এক মুদ্রণ করা হবে:

আউটপুট


1
আপনি কি নিজের কোডটি ফাঁকা করে তুলতে এটি আরও সংক্ষিপ্ত করে তুলতে পারেন?
mbomb007

@ mbomb007 যখন এক্সেল VBA লেখা স্পেস স্বয়ংক্রিয়ভাবে প্রবেশ করছে, তাই আমি শুধু তাদের ছেড়ে।
Wightboy

1

জাভাস্ক্রিপ্ট (ES2015), 81 73 বাইট

(a,b=0,c=1)=>{for(;a-->-1;c=[...(b+(b=+c)+"")].reverse().join``)alert(b)}

এই ফাংশনটি চালাচ্ছেন (নামযুক্ত f) 6:

f(6);// alerts: 0, 1, 1, 2, 3, 5, 8

1

পিপ , 13 বাইট

আমি নিশ্চিত এই প্রশ্নটি জিজ্ঞাসা করার আগে এই প্রোগ্রামে ব্যবহৃত সমস্ত বৈশিষ্ট্যগুলি পিপে উপস্থিত ছিল।

LaSio:+RVi+oi

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

               a is 1st cmdline arg; i is 0; o is 1 (implicit)
La             Loop (a) times:
       RVi+o   Reverse of i+o
      +        Unary + treats its operand as a number, thus removing leading 0's
    o:         Assign the result to o...
  Si           ... before swapping i and o
            i  After the loop, output i

দুটি ভেরিয়েবলের মানগুলি এরূপে বিকশিত হয়:

Iter   o   i (output)
   0   1   0
   1   0   1
   2   1   1
   3   1   2
   4   2   3
   5   3   5
   6   5   8
   7   8  31
   8  31  93
   9  93 421
  10 421 415

0

পুশি , 18 বাইট (প্রতিদ্বন্দ্বী)

Z1{:2d+vFs@KjkvF;_

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

এটি প্রোগ্রামগুলির মধ্যে সবচেয়ে মার্জিত নয়, তবে এটি কার্যকর হয়।

Z1     \ Push 0 and 1 to begin the sequence
{:     \ Input times do:
 2d+   \   Add the last two terms
 vF    \   Send to second stack
 s     \   Split into digits
 @Kjk  \   Reverse and join into one number
 vF;    \   Send back to first stack
_      \ At the end of the program, print the whole stack.

@ mbomb007 হ্যাঁ, দুঃখিত!
ফ্লিপট্যাক


0

আর, 134 বাইট

i=function(n){s=c(0,1);for(i in 3:n){s[i]=as.numeric(paste0(rev(strsplit(as.character(s[i-2]+s[i-1]),'')[[1]]),collapse=''))};cat(s)}

উদাহরণ:

> i(10)
0 1 1 2 3 5 8 31 93 421

আপনার নাম্বার নেওয়ার চেয়ে কারও কাছে আর এর চেয়ে ভাল বিকল্প আছে কিনা তা দেখতে পছন্দ করবেন, এটিকে স্ট্রিং করুন, এটিকে বিপরীত করুন এবং এটিকে আবার কোনও সংখ্যায় ফিরিয়ে আনুন।


0

গ্রোভি, 70 বাইট

{r={"$it".reverse() as int};f={n->n<3?1:r(f(n-1))+r(f(n-2))};r(f(it))}

{
    r={"$it".reverse() as int};       // Reverse digits, costly using string.
    f={n->n<3?1:r(f(n-1))+r(f(n-2))}; // Recursive Iccanobbif implementation.
    r(f(it))                          // Reverse final output.
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.