introduction
Bien sûr, nous avons beaucoup de défis de séquence , alors voici un autre.
La séquence de Kimberling ( A007063 ) se présente comme suit:
1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ...
Ceci est produit en mélangeant l'itération normale:
[1] 2 3 4 5 6 7 8
Le premier terme de la séquence est 1
. Après cela, nous remanions la séquence jusqu'à ce que tous les termes à gauche soient utilisés. Le mélange a le motif right - left - right - left - ...
. Puisqu'il n'y a pas de termes à gauche de la 1
, il n'y a pas de mélange. Nous obtenons ce qui suit:
2 [3] 4 5 6 7 8 9
À la i ème itération, nous jetons le i ème élément et le mettons dans notre séquence. Ceci est la 2ème itération, nous jetons donc le 2ème élément. La séquence devient: 1, 3
. Pour notre prochaine itération, nous allons mélanger l'itération actuelle avec le modèle ci-dessus. Nous prenons le premier article inutilisé à droite du i ème article. Cela se trouve être 4
. Nous ajouterons ceci à notre nouvelle itération:
4
Nous allons maintenant prendre le premier élément inutilisé à gauche du i ème élément. C'est ça 2
. Nous ajouterons ceci à notre nouvelle itération:
4 2
Puisqu'il ne reste aucun élément à gauche du i ème élément, nous allons simplement ajouter le reste de la séquence à la nouvelle itération:
4 2 [5] 6 7 8 9 10 11 ...
Ceci est notre 3ème itération, nous allons donc jeter le 3ème élément, qui est 5
. Ceci est le troisième élément de notre séquence:
1, 3, 5
Pour obtenir la prochaine itération, répétez simplement le processus. J'ai fait un gif si ce n'est pas clair:
Le gif m'a pris plus de temps que d'écrire le message
Tâche
- Étant donné un entier non négatif n , sortez les n premiers termes de la séquence
- Vous pouvez fournir une fonction ou un programme
- C'est du code-golf , donc la soumission avec le moins d'octets gagne!
Cas de test:
Input: 4
Output: 1, 3, 5, 4
Input: 8
Output: 1, 3, 5, 4, 10, 7, 15, 8
Input: 15
Output: 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28
Remarque: les virgules dans la sortie ne sont pas nécessaires. Vous pouvez par exemple utiliser des sauts de ligne, ou afficher une liste, etc.