Dans la séquence de Fibonacci alternée, vous commencez d'abord par 1
et 1
comme d'habitude.
Cependant, au lieu de toujours ajouter les deux dernières valeurs pour obtenir le nombre suivant, vous alternez en commençant par l'ajout et chaque fois que vous soustrayez à la place.
La séquence commence comme ceci:
1
1
2 # 1 + 1
-1 # 1 - 2
1 # 2 + -1
-2 # -1 - 1
-1 # 1 + -2
-1 # -2 - -1
-2 # -1 + -1
1 # -1 - -2
-1 # -2 + 1
2 # 1 - -1
1 # -1 + 2
1 # 2 - 1
etc.
Notez qu'après avoir recommencé, il arrive encore 1
et 1
encore.
Étant donné un nombre N , imprimez le N ème terme de la séquence de fibonacci alternée.
N'oubliez pas qu'il s'agit de code-golf , donc le code avec le plus petit nombre d'octets l'emporte.
true
pour1
?1
valeurs comptent-elles comme valeurs initiales pour la sortie? Ou commençons-nous directement par le2
?Réponses:
JavaScript (ES6), 25 octets
0 indexé. Vous pouvez raccourcir la chaîne avec une version légèrement récursive, bien qu'elle ajoute 6 octets:
C'est encore plus court que la formule récursive définitive:
la source
Python, 31 octets
Ne prend pas la peine d'essayer de calculer la valeur. Cherche juste dans la liste peroidic length-12
[1, 1, 2, -1, 1, -2, -1, -1, -2, 1, -1, 2]
, qui est compressée en base 5.Comparez avec une solution récursive (37 octets) avec
True
'pour 1:ou au stockage de chaînes
ou une tentative d'expression arithmétique.
la source
Oasis , 10 octets
Me rappelle d'implémenter d'autres fonctions intégrées: p. L'entrée est indexée sur 0 .
Code:
Version traduite:
Et calcule le n ème terme.
Essayez-le en ligne!
la source
05AB1E , 10 octets
Utilise l' encodage CP-1252 . Essayez-le en ligne!
la source
Pyth - 13 octets
Base codée une fois par cycle, indexée modulaire.
Essayez-le en ligne ici .
la source
Gelée, 12 octets
TryItOnline!
Basé sur 1, étant donné que les première et deuxième valeurs sont
1
.Je ne sais pas si c'est encore plus court, mais pour cela, j'ai noté que la série a une période de 12:
[1, 1, 2, -1, 1, -2, -1, -1, -2, 1, -1, 2]
Donc, j'ai pris cela et ajouté
2
pour donner[3, 3, 4, 1, 3, 0, 1, 1, 0, 3, 1, 4]
puis converti cela en
5
nombre de base en base250
, pour donner:[11, 197, 140, 84]
(qui est
184222584
).la source
Haskell,
3326 octetsApproche récursive. 0 indexé. Essayez-le sur Ideone.
7 octets enregistrés grâce à xnor .
Usage:
la source
a!b=a:b:(a+b)!(-a)
.Mathematica, 40 octets
Il crée simplement une table de recherche et y accède de manière cyclique, comme dans la réponse d'ETHproductions. Fonction sans nom, indexée 1.
la source
MATL ,
171615 octetsL'entrée est basée sur 1.
Essayez-le en ligne!
Explication
La séquence a une période
[1 1 2 -1 1 -2 -1 -1 -2 1 -1 2]
.la source
WinDbg, 26 octets
L'entrée est transmise via le pseudo-registre
$t0
. 0 indexé. +2 de chaque terme de la séquence est stocké sur 3 bits85824331b
.Comment ça fonctionne:
Exemple de sortie, une boucle imprimant les 14 premières valeurs de la séquence:
la source
Java, 32 octets
Comme il s'agit de Java, la réponse est indexée 0.
Test et non golfé:
Test sur Ideone
la source
Mathematica,
454138 octetsMerci à @MartinEnder pour 3 octets.
0 indexé.
Usage
la source
±
au lieu d'une fonctiona
.Perl 6 ,
39 3532 octetsla source
C #, 117 octets
Golfé:
Non golfé:
Essai:
la source
public int A(int n)
maintenantn=>
, vous pouvez supprimer les accolades autour de l'instruction for en économisant 2 octets, vous pouvez pré incrémenter lei
dans la boucle, c'est++i <= n
-à- dire et définir l'i = 2
enregistrement 3 octets car il supprime lei++
à la fin de l'instructionR, 38 octets
Utilise la solution de table de recherche inspirée de la réponse @ETHproductions JS.
Edit: J'ai oublié de mentionner qu'il s'agit d'un index 1.
la source
En fait , 22 octets
Essayez-le en ligne!
Explication:
la source
Java 7,
888279 octetsgolfé:
non golfé:
Essayez-le en ligne
la source
int
comme type de retour. 2. vous pouvez épargner des octets en déplaçant l'affectation de 0 à la déclaration de i:int c,i=0
etfor(;i<n;){
. 3. Vous pouvez supprimer les parenthèses autour de la condition de l'opérateur ternaire.DC, 55 octets
0 indexé.
Le registre d stocke l'index de la valeur. Le registre n compte le nombre d'itérations terminées. Register r stocke la macro principale. Le registre y stocke la dernière valeur dans la séquence, tandis que la pile contient la valeur précédente dans la séquence.
Explication visuelle de ce qui se passe dans la grande boucle (en supposant l'addition):
La vérification pour déterminer s'il faut ajouter ou soustraire prend le compteur modulo deux et utilise cette astuce pour créer une construction if then else.
À la fin, la pile contient un seul numéro, la valeur souhaitée, qui est imprimé avec
p
.(Je suis nouveau
dc
, alors je m'attends à ce qu'il y ait des améliorations évidentes à apporter ici.)la source
ForceLang , 153 octets
la source
Turtlèd , 35 octets
0 indexé
Explication:
Essayez-le en ligne!
la source
ABCR, 43 octets
Explication: la première partie (
)AAB)ABB..A))A..A)AA(ABB.)A+A)))A
) configure la file d'attente A pour contenir [1, 1, 2, -1, 1, -2, -1, -1, -2, 1, -1, 2], en laissant toutes les autres files d'attente vides .iB
stocke le terme souhaité et la boucle5aAb(Bx
parcourt la file d'attente autant de fois.o
imprime le devant de la file d'attente sous forme de nombre, qui sera alors notre réponse souhaitée.la source
Lot, 49 octets
Prend l'entrée comme paramètre de ligne de commande. Explication: le formulaire fermé utilise les observations suivantes:
On commence donc par réduire le modulo 12 (pour économiser 2 octets). Nous réduisons ensuite le modulo trois et inversons le résultat, qui est 1 pour des multiples de 3 ou 0 sinon. Nous n'avons alors pas cette valeur au niveau du bit, ce qui nous donne -2 pour les multiples de 3 ou -1 sinon. Nous réduisons ensuite modulo 5 et divisons séparément par 4, donnant zéro pour les termes 1, 2, 3, 5, 10 et 12 (0). L'inversion et la négation nous donnent -1 pour ces valeurs et zéro pour les autres valeurs. Nous avons ensuite au niveau du bit ou celui avec 1 et multiplier avec le calcul précédent.
la source
TI-Basic, 26 octets
Malheureusement, approche très inintéressante. Je n'ai rien trouvé de plus court. La liste est indexée 1.
la source
C #,
7371 octetsCela utilise des valeurs indexées à 0 de n.
Version formatée:
la source