Monday Mini-Golf: Une série de courts défis de golf à code , affichés (espérons-le!) Tous les lundis.
Une séquence de type Fibonacci est obtenue en utilisant la même méthode que la célèbre séquence de Fibonacci ; c'est-à-dire que chaque nombre F (n) est trouvé en ajoutant les deux nombres précédents dans la séquence ( F (n) = F (n-1) + F (n-2) ), ou en soustrayant les deux nombres suivants ( F (n) = F (n + 2) - F (n + 1) ). La principale différence est que ces séquences peuvent commencer par deux nombres quelconques. L'indexation zéro de ces séquences est contestable, mais pour l'instant, nous allons utiliser cette règle:
- Le 0ème nombre dans une séquence de type Fibonacci est le dernier nombre qui est plus petit que le nombre précédent.
À titre d'exemple, la séquence de Fibonacci pourrait être écrite ainsi 1, 0, 1, 1, 2, 3, 5...
, donc le 0ème numéro de la séquence est le seul 0
.
Défi
L'objectif du défi est d'écrire un programme ou une fonction qui accepte trois entiers, dans n'importe quel format:
- A et B , les deux nombres avec lesquels commencer à générer une séquence.
- N , la longueur de la séquence résultante à émettre.
Et sort les N premiers nombres de la séquence, en commençant au 0e.
Détails
- A , B et N peuvent être pris dans n'importe quel ordre et format, tant qu'ils sont visiblement séparés. Si vous utilisez un ordre / format différent, veuillez préciser de quoi il s'agit.
- Vous pouvez supposer que A , B et N sont toujours des entiers positifs.
- Vous pouvez supposer que N n'est pas supérieur à 100 et que la séquence résultante ne contiendra pas
x >= 2^31
. - Si A est plus grand que B , alors B est le numéro 0 de la séquence.
- La sortie doit être séparée par des espaces, des virgules et / ou des retours à la ligne.
- Un espace de fin ou une nouvelle ligne est autorisé, mais pas une virgule de fin.
Cas de test
Exemple 1:
8 13 10
En travaillant en arrière 8 13
jusqu'à ce que nous trouvions un nombre plus grand que le précédent, nous obtenons 13 8 5 3 2 1 1 0 1
. Ainsi, 0
est le 0e nombre dans cette séquence. À partir de là, nous imprimons 0
et les 9 membres suivants:
0 1 1 2 3 5 8 13 21 34
Exemple 2:
23 37 5
Encore une fois en arrière pour trouver le numéro 0, nous trouvons 37 23 14 9 5 4 1 3
. Le 0ème numéro est cette fois 1
, donc nous l'imprimons avec les 4 membres suivants:
1 4 5 9 14
Exemple 3:
4 3 8
Avec celui-ci, nous n'avons pas besoin de travailler en arrière pour trouver le numéro 0, car il 3
est plus petit que 4
:
3 7 10 17 27 44 71 115
Exemple 4:
29 47 11
Résultat:
1 3 4 7 11 18 29 47 76 123 199
Notation
Il s'agit de code-golf , donc le code valide le plus court en octets l'emporte. Tiebreaker revient à une soumission publiée plus tôt. Le gagnant sera choisi lundi 28 septembre prochain. Bonne chance!
Edit: Félicitations à votre gagnant, @Jakube, en utilisant Pyth pour un incroyable 23 octets!
[8, 13, 10]
)?