Si definimos una secuencia similar a Fibonacci como f k (n) = (f k (n-1) + f k (n-2))% k , para algún entero k (donde % es el operador del módulo), la secuencia necesariamente será cíclico, porque solo hay k 2 valores diferentes para (f k (n-1), f k (n-2)) . Sin embargo, este ciclo generalmente no incluye todos los pares de valores posibles, por lo que dependiendo de los dos valores iniciales f k (0) y f k (1) , podríamos obtener diferentes ciclos. Por ejemplo, para k = 2, tenemos las siguientes cuatro posibilidades, dependiendo de los dos primeros valores:
0, 0, 0, 0, 0, 0, 0, 0, 0, ...
0, 1, 1, 0, 1, 1, 0, 1, 1, ...
1, 0, 1, 1, 0, 1, 1, 0, 1, ...
1, 1, 0, 1, 1, 0, 1, 1, 0, ...
Debido a la naturaleza cíclica de las secuencias, aquí solo hay dos secuencias fundamentalmente diferentes, con las órbitas (0) y (0, 1, 1) . Veamos k = 3 :
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, ...
0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, ...
1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, ...
1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, ...
1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, ...
2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, ...
2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, ...
2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, ...
Nuevamente, solo hay dos órbitas diferentes: (0) y (0, 1, 1, 2, 0, 2, 2, 1) .
Para k más altos podríamos obtener más órbitas, pero aún caerán en un número comparativamente pequeño de clases. Por ejemplo k = 4 rendimientos los cuatro órbitas (0) , (0,1,1,2,3,1) , (0, 2, 2) , (0, 3, 3, 2, 1, 3) y k = 5 las tres órbitas (0) , (0, 1, 1, 2, 3, 0, 3, 3, 1, 4, 0, 4, 4, 3, 2, 0, 2, 2, 4, 1) y (1, 3, 4, 2) .
Su tarea en este desafío es calcular cuántas órbitas genera la secuencia para una k dada . Este es OEIS A015134 . Aquí están los primeros 100 valores (a partir de k = 1 ):
1, 2, 2, 4, 3, 4, 4, 8, 5, 6, 14, 10, 7, 8, 12, 16, 9, 16, 22, 16,
29, 28, 12, 30, 13, 14, 14, 22, 63, 24, 34, 32, 39, 34, 30, 58, 19,
86, 32, 52, 43, 58, 22, 78, 39, 46, 70, 102, 25, 26, 42, 40, 27, 52,
160, 74, 63, 126, 62, 70, 63, 134, 104, 64, 57, 78, 34, 132, 101, 60,
74, 222, 37, 38, 62, 328, 89, 64, 82, 124, 41, 86, 42, 172, 75, 44,
184, 178, 181, 132, 82, 180, 99, 140, 104, 246, 49, 50, 114, 76
Asegúrese de verificar k = 11 , que es la primera entrada que produce más de k órbitas.
Reglas
Se le da un entero positivo k y debe generar A015134 (k) .
Puede escribir un programa o una función y utilizar cualquiera de los métodos estándar para recibir entradas y proporcionar salidas.
Puede usar cualquier lenguaje de programación , pero tenga en cuenta que estas lagunas están prohibidas de forma predeterminada.
Este es el código de golf , por lo que gana la respuesta válida más corta, medida en bytes .