피보나치 시퀀스 는 숫자의 시퀀스이며, 모든 숫자는 순서는 앞의 두 숫자의 합입니다. 시퀀스의 처음 두 숫자는 모두 1입니다.

다음은 처음 몇 개의 용어입니다.

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

가장 짧은 코드 작성 그 중 하나 :

  • 끝없이 피보나치 수열을 생성합니다.

  • n 시퀀스의 n 번째 항을 계산합니다. (인덱싱 된 1 또는 0)

표준 형식의 입력 및 출력을 사용할 수 있습니다.

(하나가 더 쉬운 경우를 위해 두 옵션을 모두 제공했습니다. 선택한 언어로 수행합니다.)


n를받는 함수의 경우 상당히 큰 반환 값 (가장 큰 피보나치 수) 최소한 컴퓨터의 정상적인 단어 크기에 맞음)이 지원되어야합니다.


리더 보드

 /* Configuration */ var QUESTION_ID = 85; // Obtain this from the url // It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 3; // This should be the user ID of the challenge author. /* App */ var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "https://api.stackexchange.com/2.2/answers/" + answers.join(";") + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = "<h1>" + c.body.replace(OVERRIDE_REG, "") + "</h1>"; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery("<a>"+lang+"</a>").text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1; if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } } 
 body { text-align: left !important; display: block !important; } #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/codegolf/all.css?v=ffb5d0584c5f"> <div> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody> </tbody> </table> </div> <div> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody> </tbody> </table> </div> <table style="display: none"> <tbody> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> 

댓글

  • ” f “, 1 바이트, 내 수학 기반 골프 언어.

답변

Perl 6, 10 자 :

익명 무한 피보나치 시퀀스 목록 :

^2,*+*...* 

다음과 동일 :

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

따라서 배열에 할당 할 수 있습니다.

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

또는

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

다음을 사용하여 처음 11 개의 값 (0에서 10까지)을 가져옵니다.

say @short-fibs[^11]; 

또는 다음을 사용하여 :

say @fibs[^11]; 

잠깐, 익명 목록 자체에서도 처음 50 개의 숫자를 가져올 수 있습니다.

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

다음을 반환합니다.

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 

및 몇 가지 간단한 벤치 마크 :

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

포함 :

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

EOF

댓글

  • 나는 ‘ 생각조차하지 않을 것입니다. ^20,1를 대체합니다. +1
  • 더 이상 유효하지 않습니다. iv id = “c5a8b8f62d”와 동일한 바이트 수인 |^2,*+*...*로 작성해야합니다. >

.

  • Perl이 너무 이상합니다.
  • 이 답변이 작성된 Perl 6 버전은 무엇입니까?
  • @CalculatorFeline 큰 변화가있었습니다. GLR (Great List Refactor)로 알려져 있으며, 2015-12-25에 있었던 첫 공식 출시 직전에 발생했습니다. 이 코드는 그때까지는 제대로 작동했을 것입니다.
  • 답변

    Brainfuck, 22 획

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

    메모리 테이프에서 점진적으로 이동하는 피보나치 수열을 생성합니다.

    댓글

    • 아름다운 ! 말 그대로 아름다운! 아니면 … 어쨌든 +1 🙂
    • 이것은 압축 된 brainfuck에서 3.344 또는 4 바이트입니다. (6 ln (22)) / ln (256)
    • 16 바이트 : +[[<+>->+>+<<]>]
    • 14 바이트 : +[.[>+>+<<-]>]
    • @Stefnotch 물론 짧은 것은 파괴적입니다. 위의 솔루션은 테이프의 피보나치 시퀀스로 종료되며, 이는 16 바이트 솔루션도 마찬가지입니다.

    Answer

    Haskell, 17 15 14 자

    f=1:scanl(+)1f 

    온라인으로 사용해보세요!

    댓글

    • 두 공백을 f=0:scanl(+)1 f?
    • @Martinho : 수정되었습니다.
    • 와, ‘ 평상시보다 훨씬 더 짧습니다. f@(_:x)=0:1:zipWith(+)f x! 기억해야합니다.
    • f=0:scanl(+)1f와 같이 다른 공백을 제거 할 수도 있습니다.

    답변

    C # 4, 58 바이트

    Stream (69; IEnumerable)

    (iv id = “에 대한 using 지시문 가정 d02d48a48f “>

    .)

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

    단일 값 (58)

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

    댓글

    • nuint이고, n==0n<1로 줄일 수 있습니다. 스트림은 제네릭 유형 뒤의 공백을 버리고 필요 이상으로 더 넓은 범위에서 x를 선언하여 몇 개의 문자를 절약 할 수 있습니다.사실, 완전히 x를 버리십시오. n+=c;c=n-c;
    • @Peter : 감사합니다. 시간이되면 수정하겠습니다.
    • 귀하의 단일 값 버전은 내 재귀 람다식이 대답하는 한 … nice입니다!
    • @ wizzwizz4 if I ‘ m 잘못된 것입니다. !n가 작동하면 조건부를 뒤집 으면 n도 마찬가지입니다.
    • @JonSkeet Aw. 그리고 여기서 저는 ‘ C #에서 Jon Skeet을 이겼다고 생각했습니다 … 🙂

    Answer

    GolfScript, 12

    이제 12 자입니다!

    1.{[email protected]+.}do 

    댓글

    • +1 훌륭합니다. 13 자 미만으로 작성하면 ‘ 즉시 답변을 수락합니다 (물론 더 짧은 답변을하지 않는 한). 😛
    • 나는 도전을 좋아합니다. 끝난! 😉
    • 좋습니다. 적어도 누군가가 더 짧은 것을 만들 때까지 (‘ 가능하다면). 😛
    • 그 정의는 ‘ 피보나치 ‘ 이름만큼 짧습니다! +1

    답변

    J, 10 자

    내장 된 계산 사용 테일러 급수 계수는 다소 치명적일 수 있습니다. 여기 에서 배웠습니다.

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

    댓글

    • @aditsu (q:^-^:p) 6는 p가 짝수 인 64 729입니다. J는 아마도 그게하는 일 수수께끼에 좋습니다. 🙂
    • 더 좋음 : (<:^-^:>) 481<:^-^:> 4입니다. 53.5982입니다.
    • 여기에서 보여주는 그림 이모티콘은 모든 J 코드가 추구해야하는 것입니다. 참고로, 또 다른 대안은 9 바이트를 사용하는 +/@:!&i.-입니다.
    • @miles 매우 좋습니다! 나와 완전히 다르므로 게시해야합니다.

    답변

    > < > -15 자

    0:nao1v a+@:n:<o 

    댓글

    • 단, 0:nao1v LF a+@:n:<o 원하는 경우. 15 🙂 사실, 이것은 또한 출력을 약간 더 읽기 쉽게 만듭니다 …
    • 13 자 : 01r:nao$:@+$r

    답변

    육각 , 18 14 12

    6 바이트를 제공해 주신 Martin에게 감사드립니다!

    1="/}.!+/M8; 

    확장 :

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

    온라인으로 사용해보기


    오래된 것입니다. 이미지와 설명이 새로운 Hexagony 사용자에게 도움이 될 수 있기 때문에 남겨진 것입니다.

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

    확장 :

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

    이것은 줄 바꿈으로 구분 된 피보나치 수열을 인쇄합니다.

    온라인으로 시도해보세요! 온라인에서는주의하세요. 인터프리터는 “무한한 출력을 좋아하지 않습니다.

    설명

    이 프로그램에는 두 개의”서브 루틴 “이 있으며, 각각은 두 개의 사용 된 IP 중 하나에 의해 실행됩니다. 첫 번째 루틴은 줄 바꿈을 인쇄합니다. , 두 번째는 피보나치 계산 및 출력을 수행합니다.

    첫 번째 서브 루틴은 첫 번째 줄에서 시작하여 전체 시간 동안 왼쪽에서 오른쪽으로 이동합니다. 먼저 메모리 포인터에 값을 인쇄합니다 (0으로 초기화 됨). 그런 다음 메모리 포인터의 값을 1만큼 증가시킵니다. no-op 후에 IP는 처음에 다른 메모리 셀로 전환하는 세 번째 줄로 점프 한 다음 새 줄을 인쇄합니다. 개행은 양수 값 (값은 10), th e 코드는 항상 다음으로 다섯 번째 줄로 이동합니다. 다섯 번째 줄은 피보나치 수에 대한 메모리 포인터를 반환 한 다음 다른 서브 루틴으로 전환합니다. 이 서브 루틴에서 돌아 오면 IP는 no-op을 실행 한 후 세 번째 줄로 다시 점프합니다.

    두 번째 서브 루틴은 오른쪽 상단에서 시작하여 남동쪽으로 이동하기 시작합니다. 노옵 후, 우리는 두 번째 노선을 따라 서쪽으로 여행하기 위해 바운스됩니다. 이 줄은 메모리 포인터를 다음 위치로 이동하기 전에 현재 피보나치 수를 인쇄합니다. 그런 다음 IP는 네 번째 줄로 이동하여 이전 두 줄을 사용하여 다음 피보나치 수를 계산합니다. 그런 다음 제어권을 첫 번째 서브 루틴으로 되돌려 주지만 프로그램 제어권을 되 찾으면 점프를 만날 때까지 계속되고, 원래 서쪽을 가리키는 데 사용 된 미러 위로 튀어 나와 두 번째 라인으로 돌아갑니다.


    Preliminary Pretty Pictures!

    이미지의 왼쪽은 프로그램이고 오른쪽은 기억을 나타냅니다. 파란색 상자는 첫 번째 IP이고 두 IP는 실행할 다음 명령어를 가리 킵니다.

    여기에 이미지 설명 입력

    참고 : 사진은 이미지 편집 프로그램에 대해 비슷하게 제한된 기술을 가진 사람들에게만 예쁘게 보입니다. : PI는 * 연산자의 사용이 더 명확 해 지도록 최소 2 번의 반복을 추가합니다.

    참고 2 : 대부분의 내용을 작성한 후에 만 alephalpha의 답변 을 보았고, 분리로 인해 여전히 가치가 있다고 생각했지만 실제 피보나치 우리 프로그램의 일부는 매우 유사합니다. 또한 이것은 하나 이상의 IP를 사용하는 가장 작은 Hexagony 프로그램이므로 어쨌든 유지하는 것이 좋을 것이라고 생각했습니다 : P

    Comments

    • 예쁜 사진을 만드는 데 사용한 모든 항목에 링크 한 다음 esolangs.org/wiki/에 링크를 넣어야합니다. 육각형 .
    • @ mbomb007 김프를 사용하여 각 프레임을 수동으로 만든 다음 이미지를 일부 GI에 업로드했습니다. f 웹 사이트 만들기. 이 과정에서 여러 번 그것을 수행하는 도구를 만드는 것을 고려했지만 얼마나 지루했는지 고려했습니다.
    • @FryAmTheEggman 인상적입니다! 도전하십시오. 나는 ‘ 누군가가 답변을 게시 할 것이라고 확신합니다. : D fish ‘의 온라인 통역사와 유사한 웹 사이트를 만들 수 있다면 더 좋습니다.
    • @ mbomb007이 사이트에 도전하고 싶은 약간의 야심이있을 수 있습니다. , 말할 것도없이 정말 광범위 해지면 많은 어려움을 겪을 것입니다. 저는 ‘ 내가 그것을 게시 할 것이라고 생각하지 않습니다. 그러나 당신이 그것을 발표 할 좋은 방법이 있다고 생각한다면 자유롭게 스스로 할 수 있습니다. 또한 Timwi는 육각형에 대한 C # ide를 만들었지 만 ‘ 모노를 사용하지 않았기 때문에 ‘ 사용한 적이 없습니다.
    • @ mbomb007 ide는 여기 에 있습니다. 그런데 지난번에 링크하는 것을 잊었습니다.

    답변

    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 

    Answer

    Python 2, 34 바이트

    Python, 재귀 사용 … 여기 StackOverflow가 제공됩니다!

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

    답변

    Jelly , 3 바이트

    +¡1 

    온라인으로 사용해보세요!

    작동 방식

    +¡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. 

    ¡ 왼쪽에있는 두 개의 링크를 엿 봅니다. 하나만 있기 때문에 루프의 본문이어야합니다. 따라서 입력에서 숫자를 읽습니다. 명령 줄 인수가 없으므로 해당 번호는 STDIN에서 읽습니다.

    답변

    Hexagony , 6 바이트

    언어가 질문보다 더 최신 버전이므로 경쟁하지 않습니다.

    1.}=+! 

    Ungolfed :

     1 . } = + ! . 

    분리 기호없이 피보나치 수열을 인쇄합니다.

    코멘트

    • 숫자 사이에 구분자를 인쇄하지 않는 ‘ 사소한 문제가 있습니다. 하지만 ‘ 도전에서 완전히 잘 지정되지는 않았습니다. (그리고 저는 ‘ 누군가가 Hexagony를 사용하고있어서 정말 기쁩니다. :))

    Answer

    골프 스크립트-단일 숫자-12/11/10

    표준 입력에서 입력을 받기위한 12 자 :

    ~0 1@{.@+}*; 

    11 자 :

    0 1@{.@+}*; 

    0 번째 피보나치 수로 1을 추가로 정의하는 경우 10 자 :

    1.@{.@+}*; 

    코멘트

    • 옵션은 ” n이 주어지면 n 번째 피보나치 수를 계산합니다. “. 따라서 ~를 버리고 스택에 n를 가져 와서 F_n.

    답변

    Ruby

    29 27 25 24 자

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

    편집 : 무한 루프로 만들었습니다. 😉

    댓글

    • 누군가 b=a+a=b가 회문임을 알아 차렸나요? 🙂
    • 예 st0le이했습니다. 🙂
    • 파티에 늦었 음을 ‘ 알지만 누군가가 b=a+a=b 부분이 작동합니까? ‘ 내 머리를 감싸는 것 같지 않습니다.
    • @GigaWatt, 이렇게 생각하면 명령이 왼쪽에서 오른쪽으로 실행됩니다 …따라서 newb=olda+(a=oldb)
    • loop를 사용하여 2 개의 문자를 저장할 수 있습니다. p 1,a=b=1;loop{p b=a+a=b}

    답변

    DC (20 바이트)

    보너스로, “s even obfuscated;)

    zzr[dsb+lbrplax]dsax 

    편집 : 피보나치 수열의 모든 숫자를 인쇄한다고 지적 할 수 있습니다. 충분히 기다립니다.

    댓글

    • 난독 처리 된 코드라고 부르지 않습니다. ‘ 이해하기 어렵고 dc가 사용하는 한 여기에있는 코드는 완전히 간단합니다.

    답변

    Mathematica, 9 자

    Fibonacci 

    If 내장 함수는 허용되지 않습니다. 다음은 명시적인 솔루션입니다.

    Mathematica, 33 32 31 자

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

    댓글

    • #&@@Nest[{#+#2,#}&@@#&,{0,1},#]& 32 자
    • @chyanog 31 : #&@@Nest[{+##,#}&@@#&,{0,1},#]&
    • @ Mr.Wizard 24 자 (26 바이트) : Round[GoldenRatio^#/√5]&
    • 또는 23 자 (27 바이트) : Round[((1+√5)/2)^#/√5]&

    답변

    Prelude , 12 바이트

    Prelude가 실제로 경쟁이 치열한 몇 안되는 과제 중 하나 :

    1(v!v) ^+^ 

    문자 대신 십진수로 값을 인쇄하는 Python 인터프리터 가 필요합니다.

    설명

    Prelude에서, 모든 라인은 프로그램의 열을 순회하는 명령어 포인터와 함께 병렬로 실행됩니다. 각 줄에는 0으로 초기화되는 자체 스택이 있습니다.

    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. 

    첫 번째 스택의 맨 위에는 0가 없기 때문에 루프가 영원히 반복됩니다.

    이것은 0에서 피보나치 수열을 시작합니다.

    Answer

    TI-BASIC, 11

    이 사이트 의 전설적인 TI-BASIC 골퍼 Kenneth Hammond ( “Weregoose”)가 작성했습니다. O (1) 시간에 실행되며 0을 피보나치 수열의 0 번째 항으로 간주합니다.

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

    사용 방법 :

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

    어떻게 작동합니까? 수학을하면 sinh‾¹(.5)ln φ와 같으므로 “비넷”공식의 수정 된 버전입니다. (1/φ)^n 수정 용어를 사용하는 대신 내림합니다. 반올림 오류를 방지하려면 round( (소수점 9 자리까지 반올림)가 필요합니다.

    답변

    K-12

    nn-1 피보나치 수를 계산합니다.

    {x(|+\)/0 1} 

    nth 피보나치 수입니다.

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

    댓글

    • +1 나쁘지 않습니다! 한 글자 만 축소 할 수 있다면 (그리고 테스트 할 방법을 제공) ‘ 당신의 대답을 받아 들일 것입니다. 🙂
    • 줄이는 유일한 방법은 함수를 알려진 번호에 대한 호출로 바꾸는 것입니다. n (| + \ ) / 0 1 이 인터프리터 를 사용하여 테스트하세요.

    답변

    Java, 55

    여기서 대부분의 언어의 간결함과 경쟁 할 수는 없지만 n 번째 숫자를 계산하기 위해 상당히 다르며 훨씬 더 빠른 (일정 시간) 방법을 제공 할 수 있습니다.

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

    n는 n = 1로 시작하는 입력 (int 또는 long)입니다.

    Binet의 공식 과 빼기 대신 반올림합니다.

    댓글

    • 좋아요 이 솔루션
    • 이 방법은 ‘ 나에게 적합하지 않은 것 같지만 ‘ 초기이며 누락 된 항목이 있습니다. 0가 시퀀스의 첫 번째 숫자라고 가정하면 전나무에 0, 0, 1, 1, 3, 4, 8, 12, 21, 33가 제공됩니다. t 10 개의 숫자
    • @Shaggy Oops! 죄송합니다. 버그를 도입했습니다. 지금 수정되었습니다.

    답변

    Julia, 18 바이트

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

    답변

    Dodos , 26 바이트

    	dot F F 	F dip 	F dip dip 

    온라인으로 사용해보세요!

    작동 원리

    F 함수는 모든 무거운 작업을 수행합니다. 다음과 같이 재귀 적으로 정의됩니다.

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

    n> 1 때마다 | n-1 | = n-1 < n || n-1 | -1 | = | n-1-1 | = n-2 < n , 따라서 함수는 (F (n -1), F (n-2)) .

    n = 0 다음에 | n-1 | = 1> 0 ; n = 1 이면 || n-1 | -1 | = | 0-1 | = 1 = 1 . 두 경우 모두 시도 된 재귀 호출 F (1) Surrender 예외를 발생시킵니다. div id = “a13c927d29”>

    F (0) 는 0 F (1) 1 .

    예 : F (3) = (F (1), F (2)) = (1 , F (0), F (1)) = (1, 0, 1) .

    마지막으로 main 함수는

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

    로 정의되므로 반환 된 벡터의 모든 좌표를 더합니다. 작성자 : F .

    예 : main (3) = sum (F (3)) = sum (1, 0, 1) = 2 .

    댓글

    • README (DODOS)를 읽고 매우 흥미로 웠습니다. 정말 깔끔한 컨셉이에요! 하지만 Esolangs 나 다른 곳에서는 찾을 수 없습니다. 생각해 내 셨나요?

    답변

    Ruby, 25 자

    st0le “의 답변이 짧아졌습니다.

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

    댓글

    • 사실
    • 그의 대답을 훔쳤습니까? : P

    답변

    FAC : 기능적 APL, 4 자 (!!)

    내 것이 아니므로 커뮤니티 위키로 게시되었습니다. FAC는 Hai-Chen Tu가 박사 학위 논문으로 제안한 APL의 방언입니다. 그는 나중에 Alan J. Perlis와 함께 “ FAC : A Functional APL Language “라는 기사를 썼습니다.이 APL 방언은 “lazy arrays”와 무한 길이의 배열을 허용합니다. 일부 재귀 시퀀스의 간결한 정의를 허용하기 위해 연산자 “iter”()를 정의합니다.

    모나 딕 ( “단항) “) 의 경우는 기본적으로 Haskell의 이며 (F⌼) A ≡ A, (F A), (F (F A)), …로 정의됩니다. 이항 ( “binary”) 케이스는 두 변수에 대해 약간 유사하게 정의됩니다 : A (F⌼) B ≡ A, B, (A F B), (B F (A F B)), …. 이것이 왜 유용합니까? 음, 이것이 바로 피보나치 수열이 갖는 재발의 종류라는 것이 밝혀졌습니다. 실제로 주어진 예 중 하나는

    1+⌼1 

    친숙한 시퀀스 1 1 2 3 5 8 …를 생성하는 것입니다.

    그러면 비 참신 프로그래밍 언어에서 가능한 가장 짧은 피보나치 구현이 가능합니다. : D

    댓글

    • 오, 실수로 내 (수동) 일괄 해제 작업의 일환으로 게시물 커뮤니티에서 위키를 해제했습니다. 오 잘. 😉

    답변

    R, 40 바이트

    R 솔루션이므로 :

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

    댓글

    • 이게 오래된 답변이라는 것을 알고 있지만 38 바이트

    Answer

    05AB1E, 7 바이트

    코드 :

    1$<FDr+ 

    온라인으로 사용해보세요!

    댓글

    • 안녕하세요. PPCG에 오신 것을 환영합니다! 좋은 첫 게시물입니다!

    답변

    GolfScript, 13 자

    2,~{..p@+.}do 

    ( 이전 스택 오버플로 질문 .)

    답변

    Desmos , 61 바이트

    골프

    n의 div id = “08a44f0d0b”>

    버튼.

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

    마지막 줄이 출력입니다.

    Ungolfed

    함수입니다.

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

    답변

    Cubix , 10 바이트

    언어가 질문보다 더 새롭기 때문에 경쟁이없는 답변입니다.

    Cubix는 @ETHproductions의 새로운 2 차원 언어로 코드가 크기에 맞는 큐브에 래핑되었습니다.

    ;.o.ON/+!) 

    온라인으로 사용해보기

    이것은 2로 마무리됩니다. x 2 큐브는 다음과 같은 방식으로

     ; . o . O N / + ! ) . . . . . . . . . . . . . . 
    • O TOS 값을 출력합니다.
    • N 개행을 스택에 푸시
    • / 북쪽을 반영
    • o TOS의 문자 출력
    • ; pop TOS
    • / 큐브를 돌아 본 후 동쪽을 반영합니다.
    • + 스택의 상위 2 개 값 추가
    • ! TOS가 0이면 다음 명령을 건너 뜁니다.
    • ) TOS를 1 씩 증가시킵니다. 이렇게하면 기본적으로 시퀀스가 시작됩니다.

    이것은 줄 바꿈 구분 기호로 시퀀스를 인쇄하는 무한 루프입니다. 대부분의 명령이 스택에서 값을 가져 오지 않는다는 사실을 활용합니다.
    구분 기호를 무시하면 5 바이트로 수행 할 수 있습니다. .O+!)

    답변

    Brainfuck, 16,15, 14/13 자

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

    피보나치 수열을 생성하고 아무것도 출력하지 않습니다. 또한 위의 수열보다 짧습니다.

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

    이것은 하나는 14 자이지만 피보나치 수열의 값으로 ASCII 문자를 인쇄합니다.

    주석

    • 이것은 좋지만 제가 틀렸을까요? 14 바이트 버전은 2nd 1에서만 출력된다는 말에서? iv 대신 ” 1 2 3 5 8 “에서와 같이 id = “b3a474a808”>

    1 1 2 3 5 8 “?

  • @Charlim 오, 당신 ‘ 맞습니다. 2014 년의 저가 어떻게 생각했는지 모르겠습니다. 어쨌든 mov로 수정했습니다. 루프의 앞쪽에 인쇄 명령을 보냅니다.
  • 답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다