Hàm hoặc chuỗi Fibonacci


115

Chuỗi Fibonacci là một chuỗi các số, trong đó mỗi số trong chuỗi là tổng của hai số trước nó. Hai số đầu tiên trong chuỗi là cả 1.

Dưới đây là một vài điều khoản đầu tiên

1 1 2 3 5 8 13 21 34 55 89 ...

Viết mã ngắn nhất:

  • Tạo chuỗi Fibonacci không có kết thúc.

  • Cho ntính toán số hạng nthứ tự của dãy. (1 hoặc 0 được lập chỉ mục)

Bạn có thể sử dụng các hình thức đầu vào và đầu ra tiêu chuẩn.

(Tôi đã đưa ra cả hai tùy chọn trong trường hợp một tùy chọn dễ thực hiện bằng ngôn ngữ bạn đã chọn hơn ngôn ngữ khác.)


Đối với hàm lấy một ngiá trị trả về lớn một cách hợp lý (số Fibonacci lớn nhất phù hợp với kích thước từ thông thường của máy tính của bạn, ở mức tối thiểu) phải được hỗ trợ.


Bảng xếp hạng

Câu trả lời:


48

Perl 6, 10 ký tự:

Danh sách chuỗi vô danh vô danh:

^2,*+*...*

Giống như:

0, 1, -> $x, $y { $x + $y } ... Inf;

Vì vậy, bạn có thể gán nó cho một mảng:

my @short-fibs = ^2, * + * ... *;

hoặc là

my @fibs = 0, 1, -> $x, $y { $x + $y } ... Inf;

Và nhận mười một giá trị đầu tiên (từ 0 đến 10) với:

say @short-fibs[^11];

Hoặc với:

say @fibs[^11];

Đợi đã, bạn có thể nhận được 50 số đầu tiên từ chính danh sách ẩn danh:

say (^2,*+*...*)[^50]

Điều đó trả về:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
10946 17711 28657 46368 75025 121393 196418 317811 514229 832040
1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169
63245986 102334155 165580141 267914296 433494437 701408733 1134903170 
1836311903 2971215073 4807526976 7778742049

Và một số điểm chuẩn đơn giản:

real    0m0.966s
user    0m0.842s
sys     0m0.080s

Với:

$ time perl6 -e 'say (^2, *+* ... *)[^50]'

EOF


Tôi thậm chí sẽ không nghĩ đến việc ^2thay thế cho 0,1. +1
Konrad Borowski

2
Điều này không còn hợp lệ, bạn sẽ phải viết nó như |^2,*+*...*là số byte tương tự 0,1,*+*...*.
Brad Gilbert b2gills

5
Perl thật kỳ lạ.
Cyoce

1
Phiên bản nào của Perl 6 là câu trả lời này được viết bằng?
Máy

3
@CalculatorFeline Có một sự thay đổi lớn được gọi là GLR (Công cụ tái cấu trúc danh sách lớn) xảy ra ngay trước khi phát hành chính thức đầu tiên vào ngày 2015-12-25. Mã này sẽ hoạt động ngay cho đến thời điểm đó.
Brad Gilbert b2gills

73

Brainfuck, 22 nét

+>++[-<<[->+>+<<]>>>+]

Tạo chuỗi Fibonacci dần dần di chuyển trên băng nhớ.


5
Đẹp! Đẹp tuyệt vời! Hoặc có lẽ không ... dù sao +1 cho điều này :)
Per Hornshøj-Schierbeck

2
Đây là 3.344 hoặc 4 byte trong brainfuck nén. (6 ln (22)) / ln (256)
Will Sherwood

24
16 byte:+[[<+>->+>+<<]>]
primo

3
14 byte:+[.[>+>+<<-]>]
Charlim

2
@Stefnotch tất nhiên, cái ngắn hơn là phá hoại. Giải pháp trên chấm dứt với chuỗi Wikipedia trên băng, đó là điều mà giải pháp 16 byte cũng làm.
Primo

51

Haskell, 17 15 14 ký tự

f=1:scanl(+)1f

Hãy thử trực tuyến!


4
Tại sao không cắt hai không gian để f=0:scanl(+)1 f?
R. Martinho Fernandes

@Martinho: Đã chỉnh sửa, cảm ơn.
Anon.

Wow, nó thậm chí còn ngắn hơn bình thường f@(_:x)=0:1:zipWith(+)f x! Phải nhớ nó
FUZxxl

4
Bạn thậm chí có thể tước một không gian khác : f=0:scanl(+)1f.
FUZxxl

37

C # 4, 58 byte

Luồng (69; 65 nếu gõ yếu IEnumerable)

(Giả sử một usingchỉ thị cho System.Collections.Generic.)

IEnumerable<int>F(){int c=0,n=1;for(;;){yield return c;n+=c;c=n-c;}}

Giá trị đơn (58)

int F(uint n,int x=0,int y=1){return n<1?x:F(n-1,y,x+y);}

6
Cho rằng đó nlà một uint, n==0có thể rút ngắn thành n<1. Và luồng có thể lưu một vài ký tự bằng cách bỏ khoảng trắng sau kiểu chung và khai báo xtrong phạm vi rộng hơn mức cần thiết. Trong thực tế, mương xhoàn toàn:n+=c;c=n-c;
Peter Taylor

1
@Peter: Cảm ơn, sẽ chỉnh sửa khi tôi có thời gian.
Jon Skeet

Phiên bản giá trị duy nhất của bạn miễn là câu trả lời biểu thức lambda đệ quy của tôi ... tốt đẹp!
Andrew Grey

1
@ wizzwizz4 nếu tôi không nhầm, nếu !nhoạt động, thì chỉ nên nnếu bạn lật điều kiện.
Cyoce

3
@JonSkeet Aw. Và ở đây tôi đã nghĩ rằng tôi đã đánh bại Jon Skeet tại C # ... :-)
wizzwizz4

32

GolfScript, 12

Bây giờ, chỉ có 12 ký tự!

1.{.@.p+.}do

+1 công việc tốt đẹp. Nếu bạn làm cho nó ngắn hơn 13 ký tự, tôi sẽ ngay lập tức chấp nhận câu trả lời của bạn (trừ khi có ai đó trả lời thậm chí ngắn hơn). :-P
Chris Jester-Young

1
Tôi yêu một thử thách. Làm xong! ;-)
jtjacques

Đẹp, bạn thắng. Ít nhất, cho đến khi ai đó làm một cái gì đó thậm chí ngắn hơn (nếu điều đó thậm chí có thể). :-P
Chris Jester-Young

5
định nghĩa đó gần như ngắn bằng chính cái tên 'Fibonacci'! +1
đặc vụ-j

23

> <> - 15 ký tự

0:nao1v LF a+@:n:<o

Mặc dù bạn có thể rút ngắn nó 0:nao1v LF a+@:n:<onếu bạn muốn. Cung cấp 15 :) Trên thực tế, điều này cũng làm cho đầu ra dễ đọc hơn một chút ...
tomsmeding 18/03/13

5
13 ký tự:01r:nao$:@+$r
Randomra

21

J, 10 ký tự

Sử dụng tính toán tích hợp của các hệ số chuỗi Taylor nên có thể ít gian lận. Đã học nó ở đây .

   (%-.-*:)t.

   (%-.-*:)t. 0 1 2 3 4 5 10 100
0 1 1 2 3 5 55 354224848179261915075

2
@aditsu (q:^-^:p) 664 729nơi p chẵn. J có lẽ là tốt cho những gì nó làm câu đố. :)
ngẫu nhiên

2
Thậm chí tốt hơn: (<:^-^:>) 481<:^-^:> 453.5982.
ngẫu nhiên

2
Biểu tượng cảm xúc được thể hiện ở đây là điều mà tất cả các mã J nên cố gắng hướng tới. Mặt khác, một cách khác là +/@:!&i.-sử dụng 9 byte.
dặm

1
@miles Rất hay! Bạn nên đăng nó vì nó hoàn toàn khác với tôi.
ngẫu nhiên

21

Lục giác ,18 14 12

Cảm ơn Martin cho 6 byte!

1="/}.!+/M8;

Mở rộng:

  1 = "
 / } . !
+ / M 8 ;
 . . . .
  . . .

Dùng thử trực tuyến


Cũ, trả lời. Điều này đang được để lại vì hình ảnh và lời giải thích có thể hữu ích cho người dùng Hexagony mới.

!).={!/"*10;$.[+{]

Mở rộng:

  ! ) .
 = { ! /
" * 1 0 ;
 $ . [ +
  { ] .

Điều này in ra chuỗi Fibonacci được phân tách bằng các dòng mới.

Hãy thử trực tuyến! Hãy cẩn thận, trình thông dịch trực tuyến không thực sự thích đầu ra vô hạn.

Giải trình

Có hai "chương trình con" cho chương trình này, mỗi chương trình được điều hành bởi một trong hai IP được sử dụng. Thường trình đầu tiên in các dòng mới, và thứ hai thực hiện tính toán và đầu ra Fibonacci.

Chương trình con đầu tiên bắt đầu trên dòng đầu tiên và di chuyển từ trái sang phải toàn bộ thời gian. Đầu tiên, nó in giá trị tại con trỏ bộ nhớ (được khởi tạo thành 0), sau đó tăng giá trị tại con trỏ bộ nhớ theo 1. Sau khi không hoạt động, IP nhảy sang dòng thứ ba, đầu tiên chuyển sang một ô nhớ khác, sau đó in một dòng mới. Vì một dòng mới có giá trị dương (giá trị của nó là 10), mã sẽ luôn nhảy đến dòng thứ năm, tiếp theo. Dòng thứ năm trả về con trỏ bộ nhớ cho số Fibonacci của chúng tôi và sau đó chuyển sang chương trình con khác. Khi chúng tôi quay trở lại từ chương trình con này, IP sẽ quay trở lại dòng thứ ba, sau khi thực hiện lệnh cấm.

Chương trình con thứ hai bắt đầu ở góc trên bên phải và bắt đầu di chuyển về phía Đông Nam. Sau khi không hoạt động, chúng tôi bị trả về để đi về phía Tây dọc theo tuyến thứ hai. Dòng này in số Fibonacci hiện tại, trước khi di chuyển con trỏ bộ nhớ đến vị trí tiếp theo. Sau đó, IP nhảy đến dòng thứ tư, trong đó nó tính toán số Fibonacci tiếp theo bằng cách sử dụng hai số trước đó. Sau đó, nó đưa điều khiển trở lại chương trình con đầu tiên, nhưng khi lấy lại quyền kiểm soát chương trình, nó tiếp tục cho đến khi nó gặp một bước nhảy, trong đó nó nảy qua gương ban đầu được sử dụng để chỉ về phía Tây, khi nó quay trở lại dòng thứ hai.


Hình ảnh đẹp sơ bộ!

Phía bên trái của hình ảnh là chương trình, phía bên phải đại diện cho bộ nhớ. Hộp màu xanh là IP đầu tiên và cả hai IP đều trỏ vào lệnh tiếp theo sẽ được thực thi.

nhập mô tả hình ảnh ở đây

Lưu ý: Hình ảnh chỉ có thể xuất hiện đẹp đối với những người có kỹ năng hạn chế tương tự với các chương trình chỉnh sửa hình ảnh: PI sẽ thêm ít nhất 2 lần lặp lại để việc sử dụng *toán tử trở nên rõ ràng hơn.

Lưu ý 2: Tôi chỉ thấy câu trả lời của alephalpha sau khi viết hầu hết những điều này, tôi cho rằng nó vẫn còn giá trị vì sự tách biệt, nhưng các phần Fibonacci thực tế của các chương trình của chúng tôi rất giống nhau. Ngoài ra, đây là chương trình Hexagony nhỏ nhất mà tôi đã thấy sử dụng nhiều hơn một IP, vì vậy tôi nghĩ rằng dù sao cũng có thể giữ được: P


Bạn nên liên kết với bất cứ điều gì bạn đã sử dụng để tạo ra những bức ảnh đẹp, sau đó đặt liên kết trên esolangs.org/wiki/Hexagony .
mbomb007

1
@ mbomb007 Tôi đã sử dụng gimp để tự tạo từng khung hình, sau đó tải hình ảnh lên một số trang web làm gif. Mặc dù, nhiều lần trong quá trình này, tôi đã cân nhắc việc tạo ra một công cụ để thực hiện nó, xem xét việc nó tẻ nhạt như thế nào.
FryAmTheEggman

@FryAmTheEggman Ấn tượng! Làm cho nó một thách thức. Tôi chắc chắn ai đó sẽ đăng một câu trả lời. : D Thậm chí tốt hơn nếu bạn có thể tạo một trang web tương tự như trình thông dịch trực tuyến của cá.
mbomb007

@ mbomb007 Đó có thể là một tham vọng cho một thách thức trên trang web này, chưa kể nó có thể sẽ phải chịu đựng rất nhiều vì thực sự rộng. Tôi không nghĩ rằng tôi sẽ đăng nó, nhưng hãy tự mình làm điều đó nếu bạn nghĩ rằng bạn có một cách trình bày tốt. Ngoài ra, tôi tin rằng Timwi đã tạo ra một ide C # cho hexagony, mặc dù tôi chưa bao giờ sử dụng nó vì tôi không bận tâm đến mono.
FryAmTheEggman

1
@ mbomb007 Ide sống ở đây , nhân tiện, quên liên kết nó lần trước.
FryAmTheEggman

18

COW , 108

 MoO moO MoO mOo MOO OOM MMM moO moO
 MMM mOo mOo moO MMM mOo MMM moO moO
 MOO MOo mOo MoO moO moo mOo mOo moo

17

Python 2, 34 byte

Python, sử dụng đệ quy ... ở đây có StackOverflow!

def f(i,j):print i;f(j,i+j)
f(1,1)

15

Thạch , 3 byte

+¡1

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

+¡1    Niladic link. No implicit input.
       Since the link doesn't start with a nilad, the argument 0 is used.

  1    Yield 1.
+      Add the left and right argument.
 ¡     For reasons‡, read a number n from STDIN.
       Repeatedly call the dyadic link +, updating the right argument with
       the value of the left one, and the left one with the return value.

¡ peeks tại hai liên kết bên trái. Vì chỉ có một, nó phải là phần thân của vòng lặp. Do đó, một số được đọc từ đầu vào. Vì không có đối số dòng lệnh, số đó được đọc từ STDIN.


12

Golfscript - số duy nhất - 12/11/10

12 ký tự để lấy đầu vào từ stdin:

~0 1@{.@+}*;

11 ký tự cho đầu vào đã có trên ngăn xếp:

0 1@{.@+}*;

10 ký tự để xác định thêm 1 là số Fibonacci thứ 0:

1.@{.@+}*;

1
Tùy chọn này là "Tính toán, cho n, số Fibonacci thứ n". Vì vậy, hãy bỏ qua ~và bạn có 11 ký tự lấy nchồng và để lại F_ntrên ngăn xếp.
Peter Taylor

12

Hồng ngọc

29 27 25 24 Chars

p a=b=1;loop{b=a+a=p(b)}

Chỉnh sửa: làm cho nó một vòng lặp vô hạn. ;)


13
có ai nhận thấy b=a+a=blà một palindrom? :)
st0le

2
có st0le đã làm :)
gnibbler

Tôi biết tôi đến bữa tiệc muộn, nhưng ai đó có thể giải thích b=a+a=bphần này hoạt động như thế nào không? Dường như không thể quấn đầu tôi xung quanh nó.
Ông Llama

3
@GigaWatt, Hãy nghĩ về nó theo cách này, Hướng dẫn được thực hiện từ trái sang phải ... vì vậynewb=olda+(a=oldb)
st0le

bạn có thể lưu 2 ký tự bằng cách sử dụng loop:p 1,a=b=1;loop{p b=a+a=b}
Patrick Oscarity

11

Toán học, 9 ký tự

Fibonacci

Nếu các chức năng tích hợp không được phép, đây là một giải pháp rõ ràng:

Toán học, 33 32 31 ký tự

#&@@Nest[{+##,#}&@@#&,{0,1},#]&

#&@@Nest[{#+#2,#}&@@#&,{0,1},#]&32 ký tự.
chyanog

1
@chyanog 31:#&@@Nest[{+##,#}&@@#&,{0,1},#]&
Mr.Wizard 18/03/13

1
@ Mr.Wizard 24 ký tự (26 byte):Round[GoldenRatio^#/√5]&
JungHwan Min

1
hoặc 23 ký tự (27 byte):Round[((1+√5)/2)^#/√5]&
JungHwan Min

10

DC (20 byte)

Như một phần thưởng, nó thậm chí còn bị xáo trộn;)

zzr[dsb+lbrplax]dsax

EDIT: Tôi có thể chỉ ra rằng nó in tất cả các số trong chuỗi Wikipedia, nếu bạn chờ đủ lâu.


13
Tôi sẽ không gọi nó là obfuscated - mã bị xáo trộn được cho là khó hiểu, và theo như dc đi thì mã ở đây hoàn toàn đơn giản.
Nabb

10

Mở đầu , 12 byte

Một trong số ít những thách thức mà Prelude thực sự khá cạnh tranh:

1(v!v)
  ^+^

Điều này đòi hỏi trình thông dịch Python in các giá trị dưới dạng số thập phân thay vì ký tự.

Giải trình

Trong Prelude, tất cả các dòng được thực thi song song, với các con trỏ lệnh đi ngang qua các cột của chương trình. Mỗi dòng có ngăn xếp riêng được khởi tạo bằng không.

1(v!v)
  ^+^
| Push a 1 onto the first stack.
 | Start a loop from here to the closing ).
  | Copy the top value from the first stack to the second and vice-versa.
   | Print the value on the first stack, add the top two numbers on the second stack.
    | Copy the top value from the first stack to the second and vice-versa.

Vòng lặp lặp lại mãi mãi, bởi vì ngăn xếp đầu tiên sẽ không bao giờ có 0đỉnh.

Lưu ý rằng điều này bắt đầu chuỗi Fibonacci từ 0.


10

Lục giác , 6 byte

Không cạnh tranh vì ngôn ngữ mới hơn câu hỏi.

1.}=+!

Ung dung:

  1 .
 } = +
  ! .

Nó in chuỗi Fibonacci mà không có bất kỳ dấu phân cách nào.


2
Điều này có một vấn đề nhỏ là nó không in bất kỳ dấu phân cách nào giữa các số. Điều này không hoàn toàn được chỉ định rõ trong thử thách. (Và tôi thực sự rất vui khi ai đó đang sử dụng Hexagony. :))
Martin Ender

9

TI-BASIC, 11

Bởi tay golf huyền thoại TI-BASIC Kenneth Hammond ("Weregoose"), từ trang web này . Chạy trong thời gian O (1) và coi 0 là số hạng 0 của chuỗi Fibonacci.

int(round(√(.8)cosh(Anssinh‾¹(.5

Để sử dụng:

2:int(round(√(.8)cosh(Anssinh‾¹(.5
                                     1

12:int(round(√(.8)cosh(Anssinh‾¹(.5
                                     144

Cái này hoạt động ra sao? Nếu bạn làm toán, hóa ra nó sinh‾¹(.5)bằng ln φ, vì vậy đây là phiên bản sửa đổi của công thức Binet làm tròn thay vì sử dụng (1/φ)^nthuật ngữ chỉnh sửa. Các round((vòng đến 9 chữ số thập phân) là cần thiết để ngăn chặn các lỗi làm tròn.


8

K - 12

Tính số nn-1số Fibonacci.

{x(|+\)/0 1}

Chỉ là nthsố Fibonacci.

{*x(|+\)/0 1}

+1 Không tệ! Nếu bạn có thể thu nhỏ nó chỉ bằng một ký tự (và cung cấp cho tôi cách kiểm tra nó), tôi sẽ chấp nhận câu trả lời của bạn. :-)
Chris Jester-Young

Cách duy nhất để thu nhỏ nó là thay thế hàm bằng một cuộc gọi đến một số đã biết: n (| + \) / 0 1 Kiểm tra nó bằng trình thông dịch này .
isawdrones

7

Julia, 18 byte

n->([1 1;1 0]^n)[]

7

Java, 55

Tôi không thể cạnh tranh với sự đồng nhất của hầu hết các ngôn ngữ ở đây, nhưng tôi có thể cung cấp một cách khác biệt đáng kể và có thể nhanh hơn nhiều (thời gian không đổi) để tính số thứ n:

Math.floor(Math.pow((Math.sqrt(5)+1)/2,n)/Math.sqrt(5))

nlà đầu vào (int hoặc long), bắt đầu bằng n = 1. Nó sử dụng công thức và vòng của Binet thay vì phép trừ.


Tôi thích giải pháp này
Andreas

Điều này dường như không làm việc cho tôi, nhưng nó sớm và tôi có thể đang thiếu một cái gì đó! Giả sử 0là số đầu tiên trong chuỗi, số này cho 0, 0, 1, 1, 3, 4, 8, 12, 21, 3310 số đầu tiên
Shaggy

@Shaggy Rất tiếc! Xin lỗi, tôi đã giới thiệu một lỗi - sửa ngay bây giờ.
Hans-Peter Störr

6

Ruby, 25 ký tự

Câu trả lời của st0le rút ngắn.

p 1,a=b=1;loop{p b=a+a=b}

6
Trên thực tế, bạn có thể rút ngắn nó hơn nữa bằng cách sử dụnga=b=1;loop{p a;b=a+a=b}
Ventero

6
Vì vậy, bạn st0le câu trả lời của mình? : P
mbomb007

6

FAC: APL chức năng, 4 ký tự (!!)

Không phải của tôi, do đó được đăng dưới dạng wiki cộng đồng. FAC là một phương ngữ của APL mà Hai-Chen Tu dường như đã đề xuất làm luận án tiến sĩ năm 1985. Sau đó, ông đã viết một bài báo cùng với Alan J. Perlis gọi là " FAC: A APL Language Functional ". Phương ngữ này của APL sử dụng "mảng lười biếng" và cho phép các mảng có độ dài vô hạn. Nó định nghĩa một toán tử "iter" ( ) để cho phép định nghĩa nhỏ gọn của một số chuỗi đệ quy.

Trường hợp đơn nguyên ("đơn nguyên") về cơ bản là của Haskell iterate, và được định nghĩa là (F⌼) A ≡ A, (F A), (F (F A)), …. Trường hợp dyadic ("nhị phân") được định nghĩa tương tự cho hai biến : A (F⌼) B ≡ A, B, (A F B), (B F (A F B)), …. Tại sao điều này hữu ích? Chà, hóa ra đây chính xác là kiểu tái phát của chuỗi Fibonacci. Trong thực tế, một trong những ví dụ được đưa ra là

1+⌼1

sản xuất trình tự quen thuộc 1 1 2 3 5 8 ….

Vì vậy, bạn đi, rất có thể là triển khai Fibonacci ngắn nhất có thể trong một ngôn ngữ lập trình không mới lạ. :CƯỜI MỞ MIỆNG


Ồ, tôi đã vô tình bỏ qua bài đăng của bạn như một phần của việc bỏ qua hàng loạt (thủ công) của tôi. Ồ tốt ;-)
Chris Jester-Young

6

R, 40 byte

Không thấy giải pháp R, vì vậy:

f=function(n)ifelse(n<3,1,f(n-1)+f(n-2))

1
Tôi biết đây là một câu trả lời cũ, nhưng bạn có thể rút ngắn xuống còn 38 byte
Robert S.


6

Dodos , 26 byte

	dot F
F
	F dip
	F dip dip

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

Hàm F thực hiện tất cả các công việc nặng; nó được định nghĩa đệ quy như sau.

F(n) = ( F(|n - 1|), F(||n - 1| - 1|) )

Bất cứ khi nào n> 1 , chúng ta có | n - 1 | = n - 1 <n| | n - 1 | - 1 | = | n - 1 - 1 | = n - 2 <n , do đó hàm trả về (F (n - 1), F (n - 2)) .

Nếu n = 0 , thì | n - 1 | = 1> 0 ; nếu n = 1 , thì | | n - 1 | - 1 | = | 0 - 1 | = 1 = 1 . Trong cả hai trường hợp, các lệnh gọi đệ quy đã cố gắng F (1) đưa ra một ngoại lệ Surrender , do đó F (0) trả về 0F (1) trả về 1 .

Ví dụ: F (3) = (F (1), F (2)) = (1, F (0), F (1)) = (1, 0, 1) .

Cuối cùng, chức năng chính được định nghĩa là

main(n) = sum(F(n))

do đó nó cho biết thêm lên tất cả các tọa độ của vector được trả về bởi F .

Ví dụ: main (3) = sum (F (3)) = sum (1, 0, 1) = 2 .



5

Desmos , 61 byte

Chơi gôn

Nhấn vào add slidernút cho n.

p=.5+.5\sqrt{5}
n=0
f=5^{-.5}\left(p^n-\left(-p\right)^{-n}\right)

Dòng cuối cùng là đầu ra.

Bị đánh cắp

Là một chức năng.

\phi =\frac{1+\sqrt{5}}{2}
f_{ibonacci}\left(n\right)=\frac{\phi ^n-\left(-\phi \right)^{-n}}{\sqrt{5}}

5

Khối , 10 byte

Câu trả lời không cạnh tranh vì ngôn ngữ mới hơn câu hỏi.

Cubix là một ngôn ngữ 2 chiều mới bởi @ETHproductions là mã được bọc trên một khối có kích thước phù hợp.

;.o.ON/+!)

Dùng thử trực tuyến

Điều này kết thúc vào một khối 2 x 2 theo cách sau

    ; .
    o .
O N / + ! ) . .
. . . . . . . .
    . .
    . .
  • O xuất giá trị của ĐKDV
  • N đẩy dòng mới lên ngăn xếp
  • / phản ánh phía bắc
  • o xuất ra đặc tính của ĐKDV
  • ; nhạc pop
  • / phản xạ về phía đông sau khi đi xung quanh khối lập phương
  • + thêm 2 giá trị hàng đầu của ngăn xếp
  • ! bỏ qua lệnh tiếp theo nếu TOS bằng 0
  • ) tăng ĐKDV lên 1. Điều này khởi động trình tự cơ bản.

Đây là một vòng lặp vô tận in chuỗi bằng một dấu phân cách dòng mới. Nó lợi dụng thực tế là hầu hết các lệnh không bật các giá trị từ ngăn xếp.
Nếu dấu phân cách bị bỏ qua thì điều này có thể được thực hiện với 5 byte.O+!)


5

Brainfuck, 16,15, 14/13 ký tự

+[[->+>+<<]>]  

Tạo chuỗi Fibonacci và không in ra bất cứ điều gì. Ngoài ra, là ngắn hơn so với ở trên.

+[.[->+>+<<]>]   

Cái này có 14 ký tự nhưng in ra các ký tự ASCII với các giá trị của chuỗi Fibonacci.


1
Điều này là tốt, nhưng tôi sẽ không chính xác khi nói rằng phiên bản 14 byte chỉ xuất ra từ ngày 1 trở đi? Như trong "1 2 3 5 8" thay vì "1 1 2 3 5 8"?
Charlim

1
@Charlim ơi, bạn nói đúng. Tôi không biết tôi năm 2014 nghĩ gì. Dù sao, tôi chỉ sửa nó bằng cách di chuyển lệnh in ra phía trước vòng lặp.
Stefnotch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.