La séquence de Fibonacci est une séquence de nombres, où chaque nombre dans la séquence est la somme des deux nombres qui le précèdent. Les deux premiers nombres de la séquence sont tous les deux 1.
Voici les premiers termes
1 1 2 3 5 8 13 21 34 55 89 ...
Écrivez le code le plus court soit:
-
Génère la séquence de Fibonacci sans fin.
-
Étant donné
n
calcule len
e terme de la séquence. (Soit 1 ou zéro indexé)
Vous pouvez utiliser des formes standard dentrée et de sortie.
(Jai donné les deux options au cas où lune serait plus facile à faites dans votre langue choisie que lautre.)
Pour la fonction qui prend un n
, une valeur de retour raisonnablement grande (le plus grand nombre de Fibonacci qui correspond à la taille de mot normale de votre ordinateur, au minimum) doit être pris en charge.
Classement
/* 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>
Commentaires
- Jattends en quelque sorte une réponse comme " f ", 1 octet, dans mon langage de golf basé sur les mathématiques.
Réponse
Perl 6, 10 caractères:
Liste de séquences de fibonacci infinie anonyme:
^2,*+*...*
Identique à:
0, 1, -> $x, $y { $x + $y } ... Inf;
Vous pouvez donc lassigner à un tableau:
my @short-fibs = ^2, * + * ... *;
ou
my @fibs = 0, 1, -> $x, $y { $x + $y } ... Inf;
Et récupérez les onze premières valeurs (de 0 à 10) avec:
say @short-fibs[^11];
ou avec:
say @fibs[^11];
Attendez, vous pouvez également obtenir les 50 premiers numéros de la liste anonyme elle-même:
say (^2,*+*...*)[^50]
Cela renvoie:
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
Et quelques benchmarks simples:
real 0m0.966s user 0m0.842s sys 0m0.080s
Avec:
$ time perl6 -e "say (^2, *+* ... *)[^50]"
EOF
Commentaires
- Je ne ' même pas penser de
^2
en remplacement de0,1
. +1 - Ce nest plus valide, vous devrez lécrire comme
|^2,*+*...*
, soit le même nombre doctets que0,1,*+*...*
. - Perl est tellement bizarre.
- Dans quelle version de Perl 6 cette réponse a-t-elle été écrite?
- @CalculatorFeline Il y a eu un grand changement connu sous le nom de GLR (Great List Refactor) qui sest produit peu de temps avant la première sortie officielle qui était le 2015-12-25. Ce code aurait fonctionné jusquà ce moment-là.
Réponse
Brainfuck, 22 coups
+>++[-<<[->+>+<<]>>>+]
Génère la séquence de Fibonacci se déplaçant progressivement sur la bande mémoire.
Commentaires
- Magnifique ! Littéralement beau! Ou peut-être pas … en tout cas +1 pour ça 🙂
- Cest 3,344 ou 4 octets en brainfuck compressé. (6 ln (22)) / ln (256)
- 16 octets:
+[[<+>->+>+<<]>]
- 14 octets:
+[.[>+>+<<-]>]
- @Stefnotch bien sûr, le plus court est destructeur. La solution ci-dessus se termine par la séquence fibonacci sur la bande, ce que fait également la solution de 16 octets.
Answer
Haskell, 17 15 14 caractères
f=1:scanl(+)1f
Commentaires
- Pourquoi ne pas couper deux espaces en
f=0:scanl(+)1 f
? - @Martinho: Modifié, merci.
- Wow, ce ' est encore plus court que lhabituel
f@(_:x)=0:1:zipWith(+)f x
! Je dois vous en souvenir. - Vous pouvez même supprimer un autre espace:
f=0:scanl(+)1f
.
Réponse
C # 4, 58 octets
Stream (69; 65 si faiblement tapé à IEnumerable
)
(En supposant une directive using
pour System.Collections.Generic
.)
IEnumerable<int>F(){int c=0,n=1;for(;;){yield return c;n+=c;c=n-c;}}
Valeur unique (58)
int F(uint n,int x=0,int y=1){return n<1?x:F(n-1,y,x+y);}
Commentaires
- Étant donné que
n
est unuint
,n==0
peut être raccourci enn<1
. Et le flux peut enregistrer quelques caractères en abandonnant lespace après le type générique et en déclarantx
dans une portée plus large que nécessaire.En fait, abandonnezx
entièrement:n+=c;c=n-c;
- @Peter: Merci, je modifierai quand jaurai du temps.
- Votre version à valeur unique est aussi longue que ma réponse dexpression lambda récursive … bien!
- @ wizzwizz4 si je ' ne suis pas erroné, si
!n
fonctionne, alorsn
si vous inversez le conditionnel. - @JonSkeet Aw. Et là, je pensais que javais ' battu Jon Skeet en C # … 🙂
Réponse
GolfScript, 12
Maintenant, seulement 12 caractères!
1.{[email protected]+.}do
Commentaires
- +1 beau travail. Si vous le réduisez à moins de 13 caractères, je ' accepterai instantanément votre réponse (à moins que quelquun ne fasse une réponse encore plus courte, bien sûr). 😛
- Jadore les défis. Fait! 😉
- Bien, vous gagnez. Au moins, jusquà ce que quelquun fasse quelque chose dencore plus court (si cela ' est encore possible). 😛
- cette définition est presque aussi courte que le nom ' Fibonacci ' lui-même! +1
Réponse
J, 10 caractères
Utilisation du calcul intégré de Coefficients de la série Taylor, donc peut-être un peu trompeur. Je lai appris ici .
(%-.-*:)t. (%-.-*:)t. 0 1 2 3 4 5 10 100 0 1 1 2 3 5 55 354224848179261915075
Commentaires
- @aditsu
(q:^-^:p) 6
est64 729
où p est pair. J est probablement bon pour ce quil fait énigmes. 🙂 - Encore mieux:
(<:^-^:>) 4
est81
et<:^-^:> 4
est53.5982
. - Lemoji montré ici est ce vers quoi tout le code J devrait tendre. En passant, une autre alternative est
+/@:!&i.-
en utilisant 9 octets. - @miles Très bien! Vous devriez le publier car il est totalement différent du mien.
Réponse
> < > – 15 caractères
0:nao1v a+@:n:<o
Commentaires
- Bien que vous puissiez le raccourcir en
0:nao1v LF a+@:n:<o
si vous le souhaitez. Donne 15 🙂 En fait, cela rend également la sortie légèrement plus lisible … - 13 caractères:
01r:nao$:@+$r
Réponse
Hexagony , 18 14 12
Merci Martin pour 6 octets!
1="/}.!+/M8;
Développé:
1 = " / } . ! + / M 8 ; . . . . . . .
Ancien, répondez. Ceci est laissé car les images et les explications pourraient être utiles aux nouveaux utilisateurs dHexagony.
!).={!/"*10;$.[+{]
Développé:
! ) . = { ! / " * 1 0 ; $ . [ + { ] .
Ceci imprime la séquence de Fibonacci séparée par des retours à la ligne.
Essayez-le en ligne! Attention cependant, le linterpréteur naime pas vraiment la sortie infinie.
Explication
Il y a deux « sous-programmes » pour ce programme, chacun est exécuté par lune des deux adresses IP utilisées. La première routine imprime les nouvelles lignes , et le second fait le calcul et la sortie de Fibonacci.
Le premier sous-programme commence sur la première ligne et se déplace de gauche à droite tout le temps. Il imprime dabord la valeur au pointeur de mémoire (initialisé à zéro), puis incrémente la valeur du pointeur de mémoire de 1
. Après la non-opération, ladresse IP passe à la troisième ligne qui passe dabord à une autre cellule de mémoire, puis imprime une nouvelle ligne. Depuis une nouvelle ligne a une valeur positive (sa valeur est 10), e Le code passera toujours à la cinquième ligne, la suivante. La cinquième ligne renvoie le pointeur de mémoire sur notre numéro de Fibonacci et passe ensuite à lautre sous-programme. Quand nous revenons de ce sous-programme, lIP retournera à la troisième ligne, après avoir exécuté un no-op.
Le deuxième sous-programme commence dans le coin supérieur droit et commence à se déplacer vers le sud-est. Après un no-op, nous sommes rebondis pour voyager vers louest le long de la deuxième ligne. Cette ligne imprime le numéro de Fibonacci actuel, avant de déplacer le pointeur de mémoire vers lemplacement suivant. Ensuite, ladresse IP passe à la quatrième ligne, où elle calcule le numéro de Fibonacci suivant en utilisant les deux précédents. Il redonne ensuite le contrôle au premier sous-programme, mais lorsquil reprend le contrôle du programme, il continue jusquà ce quil rencontre un saut, où il rebondit sur le miroir qui était à lorigine utilisé pour le pointer vers louest, lorsquil revient à la deuxième ligne.
Jolies images préliminaires!
Le côté gauche de limage est le programme, le côté droit représente la mémoire. La boîte bleue est la première adresse IP, et les deux adresses IP pointent vers la prochaine instruction à exécuter.
Remarque: les images peuvent napparaissent jolies quaux personnes qui ont des compétences tout aussi limitées avec les programmes dédition dimages: PI ajoutera au moins 2 itérations supplémentaires afin que lutilisation de lopérateur *
devienne plus claire.
Note 2: Je nai vu que la réponse de alephalpha « après avoir écrit la plus grande partie de ceci, je me suis dit que cétait toujours utile à cause de la séparation, mais le Fibonacci réel certaines parties de nos programmes sont très similaires. De plus, cest le plus petit programme Hexagony que jai vu utiliser plus dune adresse IP, donc jai pensé quil serait bon de garder quand même: P
Commentaires
- Vous devez créer un lien vers ce que vous avez utilisé pour faire les jolies images, puis mettre le lien sur esolangs.org/wiki/ Hexagony .
- @ mbomb007 Jai utilisé gimp pour créer manuellement chaque image, puis jai téléchargé les images sur un gi f faire un site Web. Bien que, plusieurs fois au cours de ce processus, jai envisagé de créer un outil pour le faire, compte tenu de la complexité de ce processus.
- @FryAmTheEggman Impressionnant! Faites-en un défi. Je ' je suis sûr que quelquun affichera une réponse. : D Encore mieux si vous pouviez créer un site Web similaire à linterprète en ligne de fish '.
- @ mbomb007 Cela pourrait être un peu ambitieux pour un défi sur ce site , pour ne pas mentionner quil souffrirait probablement beaucoup dêtre vraiment large. Je ' ne pense pas que je publierai ça, mais nhésitez pas à le faire vous-même si vous pensez avoir une bonne façon de le présenter. De plus, je crois que Timwi a créé un C # ide pour lhexagonie, bien que je ' ne lai jamais utilisé parce que je nai ' pas me soucier du mono.
- @ mbomb007 Lide vit ici , dailleurs, jai oublié de le lier la dernière fois.
Réponse
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
Réponse
Python 2, 34 octets
Python, en utilisant la récursivité … ici vient un StackOverflow!
def f(i,j):print i;f(j,i+j) f(1,1)
Réponse
Jelly , 3 octets
+¡1
Fonctionnement
+¡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.
‡ ¡
regarde les deux liens à gauche. Puisquil ny en a quun, ce doit être le corps de la boucle. Par conséquent, un nombre est lu à partir de lentrée. Puisquil ny a pas darguments de ligne de commande, ce nombre est lu à partir de STDIN.
Réponse
Hexagony , 6 octets
Non compétitif car la langue est plus récente que la question.
1.}=+!
Non golfé:
1 . } = + ! .
Il imprime la séquence de Fibonacci sans aucun séparateur.
Commentaires
- Cela a le problème mineur de ne ' t afficher aucun séparateur entre les nombres. Ceci nest cependant pas ' t entièrement spécifié dans le défi. (Et je ' je suis vraiment heureux que quelquun utilise Hexagony. :))
Réponse
Golfscript – numéro unique – 12/11/10
12 caractères pour prendre lentrée de stdin:
~0 1@{.@+}*;
11 caractères pour lentrée déjà sur la pile:
0 1@{.@+}*;
10 caractères pour définir plus en détail 1 comme le 0ème nombre de Fibonacci:
1.@{.@+}*;
Commentaires
- Loption est " Calcule, étant donné n, le nième nombre de Fibonacci ". Alors laissez tomber le
~
et vous avez 11 caractères qui prennentn
sur la pile et laissezF_n
sur la pile.
Réponse
Ruby
29 27 25 24 Chars
p a=b=1;loop{b=a+a=p(b)}
Edit: en a fait une boucle infinie. 😉
Commentaires
- Quelquun a-t-il remarqué que
b=a+a=b
est un palindrome? 🙂 - oui st0le la fait 🙂
- Je sais que je ' suis en retard à la fête, mais quelquun peut-il expliquer comment le
b=a+a=b
une partie fonctionne? ' ne semble-t-il pas menvelopper la tête. - @GigaWatt, Pensez-y de cette façon, les instructions sont exécutées de gauche à droite …donc
newb=olda+(a=oldb)
- vous pouvez enregistrer 2 caractères en utilisant
loop
:p 1,a=b=1;loop{p b=a+a=b}
Réponse
DC (20 octets)
En prime, il « est même obscurci;)
zzr[dsb+lbrplax]dsax
EDIT: Je peux signaler quil imprime tous les nombres de la séquence fibonacci, si vous attendez assez longtemps.
Commentaires
- Je ne ' pas lappeler obscurci – code obscurci est censé être difficile à comprendre, et en ce qui concerne dc, le code ici est tout à fait simple.
Réponse
Mathematica, 9 caractères
Fibonacci
Si les fonctions intégrées ne sont pas autorisées, voici une solution explicite:
Mathematica, 33 32 31 caractères
#&@@Nest[{+##,#}&@@#&,{0,1},#]&
Commentaires
-
#&@@Nest[{#+#2,#}&@@#&,{0,1},#]&
32 caractères. - @chyanog 31:
#&@@Nest[{+##,#}&@@#&,{0,1},#]&
- @ Mr.Wizard 24 caractères (26 octets):
Round[GoldenRatio^#/√5]&
- ou 23 caractères (27 octets):
Round[((1+√5)/2)^#/√5]&
Réponse
Prelude , 12 octets
Lun des rares défis où Prelude est en fait assez compétitif:
1(v!v) ^+^
Cela nécessite linterpréteur Python qui imprime les valeurs sous forme de nombres décimaux au lieu de caractères.
Explication
En prélude, toutes les lignes sont exécutées en parallèle, le pointeur dinstruction traversant les colonnes du programme. Chaque ligne a sa propre pile qui est initialisée à zéro.
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.
La boucle se répète indéfiniment, car la première pile naura jamais de 0
en haut.
Notez que cela démarre la séquence de Fibonacci à partir de 0
.
Réponse
TI-BASIC, 11
Par le légendaire golfeur TI-BASIC Kenneth Hammond (« Weregoose »), de ce site . Sexécute en temps O (1) et considère que 0 est le 0e terme de la séquence de Fibonacci.
int(round(√(.8)cosh(Anssinh‾¹(.5
Pour utiliser:
2:int(round(√(.8)cosh(Anssinh‾¹(.5 1 12:int(round(√(.8)cosh(Anssinh‾¹(.5 144
Comment ça marche? Si vous faites le calcul, il savère que sinh‾¹(.5)
est égal à ln φ
, donc cest « une version modifiée de la formule de Binet » qui arrondit vers le bas au lieu dutiliser le terme de correction (1/φ)^n
. Le round(
(arrondi à 9 décimales) est nécessaire pour éviter les erreurs darrondi.
Réponse
K – 12
Calcule le n
et n-1
le nombre de Fibonacci.
{x(|+\)/0 1}
Juste le nth
numéro de Fibonacci.
{*x(|+\)/0 1}
Commentaires
- +1 Pas mal! Si vous pouviez réduire un seul caractère (et me fournir un moyen de le tester), je ' accepterai votre réponse. 🙂
- Le seul moyen de le réduire serait de remplacer la fonction par un appel à un numéro connu: n (| + \ ) / 0 1 Testez-le en utilisant cet interpréteur .
Réponse
Java, 55
Je ne peux pas rivaliser avec la concision de la plupart des langages ici, mais je peux proposer un moyen sensiblement différent et peut-être beaucoup plus rapide (temps constant) de calculer le n-ième nombre:
Math.floor(Math.pow((Math.sqrt(5)+1)/2,n)/Math.sqrt(5))
n
est lentrée (int ou long), commençant par n = 1. Il utilise Formule de Binet et arrondit au lieu de la soustraction.
Commentaires
- Jaime cette solution
- Cela ' ne semble pas fonctionner pour moi, mais cela ' est précoce et je suis peut-être il manque quelque chose! En supposant que
0
soit le premier nombre de la séquence, cela donne0, 0, 1, 1, 3, 4, 8, 12, 21, 33
pour les premiers t 10 numéros - @Shaggy Oups! Désolé, jai introduit un bug – corrigé maintenant.
Réponse
Julia, 18 octets
n->([1 1;1 0]^n)[]
Réponse
Dodos , 26 octets
dot F F F dip F dip dip
Comment ça marche
La fonction F fait tout le gros du travail; il est défini récursivement comme suit.
F(n) = ( F(|n - 1|), F(||n - 1| - 1|) )
Chaque fois que n> 1 , nous avons | n – 1 | = n – 1 < n et || n – 1 | – 1 | = | n – 1 – 1 | = n – 2 < n , donc la fonction renvoie (F (n – 1), F (n – 2)) .
Si n = 0 , puis | n – 1 | = 1> 0 ; si n = 1 , alors || n – 1 | – 1 | = | 0 – 1 | = 1 = 1 . Dans les deux cas, les tentatives dappels récursifs F (1) déclenchent une exception Surrender , donc F (0) renvoie 0 et F (1) renvoie 1 .
Par exemple, F (3) = (F (1), F (2)) = (1 , F (0), F (1)) = (1, 0, 1) .
Enfin, le main est définie comme
main(n) = sum(F(n))
donc elle additionne toutes les coordonnées du vecteur renvoyé par F .
Par exemple, main (3) = sum (F (3)) = sum (1, 0, 1) = 2 .
Commentaires
- Jai lu votre README (DODOS) et je suis super intrigué; cest un concept vraiment sympa! Mais je ne peux pas le trouver sur Esolangs ou ailleurs. Lavez-vous trouvé?
Réponse
Ruby, 25 caractères
st0le « réponse raccourcie.
p 1,a=b=1;loop{p b=a+a=b}
Commentaires
- En fait, vous pouvez la raccourcir encore plus en utilisant
a=b=1;loop{p a;b=a+a=b}
- Alors vous st0le sa réponse?: P
Réponse
FAC: APL fonctionnel, 4 caractères (!!)
Pas le mien, donc publié en tant que wiki communautaire. FAC est un dialecte dAPL que Hai-Chen Tu a apparemment suggéré comme thèse de doctorat en 1985. Il a ensuite écrit un article avec Alan J. Perlis intitulé « FAC: A Functional APL Language « . Ce dialecte dAPL utilise des « lazy arrays » et autorise des tableaux de longueur infinie. Il définit un opérateur « iter » (⌼
) pour permettre une définition compacte de certaines séquences récursives.
Le monadique (« unaire « ) la casse de ⌼
est essentiellement Haskell » s et est défini comme (F⌼) A ≡ A, (F A), (F (F A)), …
. Le cas dyadique (« binaire ») est défini de manière quelque peu analogue pour deux variables: A (F⌼) B ≡ A, B, (A F B), (B F (A F B)), …
. Pourquoi est-ce utile? Eh bien, il savère que cest précisément le type de récurrence de la séquence de Fibonacci. En fait, lun des exemples qui en est donné est
1+⌼1
produisant la séquence familière 1 1 2 3 5 8 …
.
Donc, voilà, très probablement limplémentation de Fibonacci la plus courte possible dans un langage de programmation non novateur. : D
Commentaires
- Oh, jai accidentellement désintégré votre message dans le cadre de mon (manuel) décompactage en masse. Tant pis. 😉
Réponse
R, 40 octets
Je nai « pas vu un Solution R, donc:
f=function(n)ifelse(n<3,1,f(n-1)+f(n-2))
Commentaires
- Je sais que cest une vieille réponse, mais vous peut raccourcir à 38 octets
Réponse
05AB1E, 7 octets
Code:
1$<FDr+
Commentaires
- Bonjour et bienvenue dans PPCG! Beau premier message!
Réponse
Réponse
Desmos , 61 octets
Golfé
Cliquez sur le bouton add slider
bouton pour n
.
p=.5+.5\sqrt{5} n=0 f=5^{-.5}\left(p^n-\left(-p\right)^{-n}\right)
La dernière ligne est la sortie.
Ungolfed
Est une fonction.
\phi =\frac{1+\sqrt{5}}{2} f_{ibonacci}\left(n\right)=\frac{\phi ^n-\left(-\phi \right)^{-n}}{\sqrt{5}}
Réponse
Cubix , 10 octets
Réponse non concurrente car le langage est plus récent que la question.
Cubix est un nouveau langage à 2 dimensions de @ETHproductions où le code est enveloppé dans un cube dimensionné pour sadapter.
;.o.ON/+!)
Ceci se termine sur un 2 x 2 cube de la manière suivante
; . o . O N / + ! ) . . . . . . . . . . . . . .
-
O
affiche la valeur du TOS -
N
pousser la nouvelle ligne sur la pile -
/
refléter le nord -
o
afficher le caractère du TOS -
;
pop TOS -
/
refléter lest après avoir fait le tour du cube -
+
ajouter les 2 premières valeurs de la pile -
!
sauter la commande suivante si le TOS est égal à 0 -
)
incrémenter le TOS de 1. Cela lance essentiellement la séquence.
Il sagit dune boucle sans fin qui imprime la séquence avec un séparateur de nouvelle ligne. Il tire parti du fait que la plupart des commandes ne font pas apparaître les valeurs de la pile.
Si le séparateur est ignoré, cela peut être fait avec 5 octets .O+!)
Réponse
Brainfuck, 16,15, 14/13 caractères
+[[->+>+<<]>]
Génère la séquence de Fibonacci et nimprime rien. Aussi, est plus court que celui ci-dessus.
+[.[->+>+<<]>]
Ceci on a 14 caractères mais imprime les caractères ASCII avec les valeurs de la séquence de Fibonacci.
Commentaires
- Cest bien, mais serais-je incorrect en disant que la version 14 octets ne sort quà partir du 2e 1? Comme dans " 1 2 3 5 8 " au lieu de " 1 1 2 3 5 8 "?
- @Charlim Oh, vous ' a raison. Je nai aucune idée de ce que le moi de 2014 a pensé. Quoi quil en soit, je viens de le réparer par mov insérer linstruction dimpression au début de la boucle.