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 13jusqu'à 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, 0est le 0e nombre dans cette séquence. À partir de là, nous imprimons 0et 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 3est 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])?