Permite definir una secuencia de puntero a ser cualquier secuencia tal que a (n) = a ((n-1) - (a (n-1))) forall n mayor que algún número finito. Por ejemplo, si nuestra secuencia comenzó con
3 2 1
Nuestro siguiente término sería 2, porque a (n-1) = 1 , (n-1) -1 = 1 , a (1) = 2 (este ejemplo es índice cero, sin embargo, no importa qué índice use el cálculo) siempre sea lo mismo). Si repetimos el proceso obtenemos la secuencia infinita
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
Tarea
Dado un conjunto inicial de enteros positivos, la secuencia del puntero comienza con ese conjunto.
Tipos de salida
La salida está destinada a ser flexible, si elige escribir una función como su programa puede devolver, ya sea una lista infinita de enteros o una función que indexa la secuencia. Si elige escribir un programa completo, puede generar términos de la secuencia indefinidamente.
También puede optar por tomar dos entradas, la matriz inicial y un índice. Si elige hacer esto, solo necesita mostrar el término de la secuencia en ese índice.
Nunca se le dará una secuencia que requiera indexación antes del comienzo de la secuencia. Por ejemplo, 3no es una entrada válida porque necesitaría términos antes del 3para resolver el siguiente término.
Este es el código de golf, por lo que su puntaje será el número de bytes en su programa con un puntaje más bajo mejor.
Casos de prueba
los casos de prueba se truncan por simplicidad
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 ...