Permet de définir une séquence de pointeur pour être une séquence telle que a (n) = a ((n-1) - (a (n-1))) forall n supérieur à un certain nombre fini. Par exemple, si notre séquence a commencé par
3 2 1
Notre prochain terme serait 2
, car a (n-1) = 1 , (n-1) -1 = 1 , a (1) = 2 (cet exemple est un indice zéro, mais peu importe l'indice que vous utilisez, le calcul sera toujours être le même.). Si nous répétons le processus, nous obtenons la séquence infinie
3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2
Tâche
Étant donné un tableau initial d'entiers positifs, affichez la séquence de pointeurs commençant par ce tableau.
Types de sortie
La sortie est censée être flexible, si vous choisissez d'écrire une fonction en tant que programme, elle peut renvoyer, soit une liste infinie d'entiers ou une fonction qui indexe la séquence. Si vous choisissez d'écrire un programme complet, vous pouvez sortir indéfiniment les termes de la séquence.
Vous pouvez également choisir de prendre deux entrées, le tableau de départ et un index. Si vous choisissez de le faire, vous devez uniquement afficher le terme de la séquence à cet index.
Vous ne recevrez jamais une séquence qui nécessite une indexation avant le début de la séquence. Par exemple, 3
n'est pas une entrée valide car vous auriez besoin de termes avant le 3
pour résoudre le terme suivant.
Il s'agit de code-golf, donc votre score sera le nombre d'octets de votre programme, un score inférieur étant meilleur.
Cas de test
les cas de test sont tronqués pour plus de simplicité
2 1 -> 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 ...
2 3 1 -> 2 3 1 3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 ...
3 3 1 -> 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 ...
4 3 1 -> 4 3 1 3 4 4 3 3 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 ...