Vous avez probablement entendu parler des chiffres de Fibonacci. Vous savez, cette séquence entière qui commence par 1, 1
, puis chaque nouveau nombre est la somme des deux derniers?
1 1 2 3 5 8 13...
Etc. Les défis concernant les numéros de Fibonacci sont assez populaires ici . Mais qui a dit que les chiffres de Fibonacci devaient commencer 1, 1
? Pourquoi n'ont-ils pas pu commencer 0, 1
? D'accord, redéfinissons-les pour commencer à 0:
0 1 1 2 3 5 8 13...
Mais ... Nous ne devons pas nous arrêter là non plus! Si nous pouvons ajouter les deux derniers nombres pour obtenir le suivant, nous pourrions également soustraire le premier nombre du deuxième nombre pour ajouter un nouveau nombre. Cela pourrait donc commencer par 1, 0
:
1 0 1 1 2 3 5 8 13...
On peut même se retrouver avec des négatifs:
-1 1 0 1 1 2 3 5 8 13...
Et cette série continue aussi pour toujours. Je pense que c'est intéressant de voir comment cela finit par refléter les nombres réguliers de Fibonacci, juste avec tous les autres nombres rendus négatifs:
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Appelons cette série le «numéro de Fibonacci étendu», ou EFN . Puisqu'il n'y a pas vraiment de nombre négatif évident pour commencer cette série, nous dirons que 0 apparaît à 0 , les nombres de Fibonacci réguliers s'étendent aux indices positifs, et les nombres de Fibonacci négatifs (semi-négatifs?) S'étendent aux indices négatifs, comme ceci:
Indices: ...-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
Values: ...13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Cela nous amène au défi d'aujourd'hui:
Étant donné un entier N , retournez chaque indice auquel N apparaît dans la série EFN .
Quelques observations aléatoires sur cette tâche:
1 apparaît plusieurs fois dans le EFN que tout autre numéro:
[-1, 1, 2]
. Aucun numéro n'apparaîtra dans plus de 3 endroits.Chaque numéro de Fibonacci> 1 apparaîtra une fois (3, 8, 21, etc.) ou deux fois (2, 5, 13, etc.)
Clarifications des règles:
- Si ce
abs(N)
n'est pas un nombre de Fibonacci, il n'apparaîtra jamais dans la série EFN , donc vous ne devez rien générer / une collection vide si possible, ou si cela n'est pas possible dans votre langue, vous pouvez sortir une valeur non numérique constante. - Si N apparaît à plusieurs endroits dans l' EFN , votre sortie n'a pas besoin d'être triée. Bien que chaque index doit apparaître exactement une fois.
- Bien que la plupart des défis de séquence vous permettent de choisir si vous souhaitez utiliser l'indexation basée sur 1 ou 0, ce défi doit utiliser l'indexation décrite (où 0 apparaît à 0).
- Vous pouvez utiliser les E / S dans n'importe quel format standard.
Cas de test
-13: []
-12: []
-11: []
-10: []
-9: []
-8: [-6]
-7: []
-6: []
-5: []
-4: []
-3: [-4]
-2: []
-1: [-2]
0: 0
1: [-1, 1, 2]
2: [-3, 3]
3: [4]
4: []
5: [-5, 5]
6: []
7: []
8: [6]
9: []
10: []
11: []
12: []
13: [-7, 7]
Et quelques cas de test plus importants:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
Comme d'habitude, la réponse la plus courte en octets gagne!