Vous connaissez probablement tous la séquence des fibonacci:
fibonacci(n)=fibonacci(n-1)+fibonacci(n-2)
fibonacci(0)=0
fibonacci(1)=1
Votre tâche est aussi simple que possible:
- Compte tenu entier
N
Computefibonacci(n)
mais voici la torsion:
- Faire aussi négatif
N
Attendez. Quelle?
fibonacci(1)=fibonacci(0)+fibonacci(-1)
alors
fibonacci(-1)=1
et
fibonacci(-2)=fibonacci(0)-fibonacci(1)=-1
etc...
- Il s'agit d'un code-golf, donc le programme le plus court en octets gagne.
- Vous pouvez soumettre une fonction ou un programme complet
- N est dans [-100,100]
Cas de test en CSV:
-9;-8;-7;-6;-5;-4;-3;-2;-1;0;1;2;3;4;5;6;7;8
34;-21;13;-8;5;-3;2;-1;1;0;1;1;2;3;5;8;13;21
Allusion:
n <0 et n & 1 == 0:
fibonacci(n)=fibonacci(abs(n))*-1
Réponses:
Mathematica, 9 octets
Oui, cette fonction intégrée prend en charge les nombres négatifs.
la source
Octave, 20 octets
Essayez-le en ligne!
Explication
Cela utilise le fait que la séquence de fibonacci
f(n)
peut être écrite comme (cela devrait être une notation vectorielle matricielle):Récursivement:
Explicitement:
Cela signifie que l'entrée supérieure droite de cette matrice à la puissance de
n
est la valeurf(n)
que nous recherchons. Évidemment, nous pouvons également inverser cette matrice car elle a un rang complet, et la relation décrit toujours la même relation de récurrence. Cela signifie que cela fonctionne également pour les entrées négatives.la source
ans(-6)
censé être positif?Maxima, 3 octets
prend en charge les nombres positifs et négatifs.
Essayez-le (collez) sur CESGA - Maxima en ligne
la source
Python, 43 octets
Une formule directe avec le nombre d'or
g
. Avecf
la fonction ci-dessus:Alt de même longueur, aliasant uniquement la racine carrée de 5:
Je n'ai pas vu un moyen de créer une fonction récursive qui pourrait rivaliser avec ceux-ci. Une tentative modérément golfée pour 57 octets:
A titre de comparaison, une méthode itérative (60 octets en Python 2):
Ou, pour 58 octets:
la source
JavaScript (ES6), 42 octets
Tester
Afficher l'extrait de code
la source
MATL ,
119 octetsJe suis content duMerci @LuisMendo pour -2 octets =)[3,2]
, qui pourrait certainement être joué au golf, si quelqu'un connaît un moyen, faites-le moi savoir =) (Cela fonctionnerait également avec[1,3]
.)Ceci utilise la même approche que l' annswer d'Octave . Mais pour générer la matrice
nous convertissons simplement le nombre
3
et2
de décimal en binaire (ie11
et10
).Essayez-le en ligne!
la source
JavaScript (ES7) 37 octets
Utilise la formule de Binet .
Cette sortie du
n
ième nombre de Fibonacci + -0.0000000000000005
.la source
**
nécessite ES7.1-p
au lieu de-1/p
devrait avoir fonctionné pour la même économie.Jolf, 2 octets
Essayez-le ici!
Le fibonacci intégré, implémenté en utilisant la
phi
formule.la source
Haskell, 51 octets
la source
,
lieu de&&
:even z,z<0
.PowerShell , 112 octets
Appel de démonstration:
Sortie de démo:
la source
Lithp , 88 octets
Mon regard sur toutes ces parenthèses .
Essayez-le en ligne!
Pas vraiment très petit. Il existe actuellement un bogue d'analyse qui en nécessite un à utiliser
(get N)
ou(+ N)
au lieu de simplementN
. J'ai choisi le plus petit. Cependant, je ne pense pas qu'il y ait quoi que ce soit qui puisse être fait pour jouer au golf.la source