Todos estamos familiarizados con la secuencia de Fibonacci :
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765
Sin embargo, en lugar de, f(n) = f(n-1) + f(n-2)
tomaremos la suma digital de las 2 entradas anteriores.
La secuencia aún debe comenzar 0, 1
, después de eso, las diferencias son rápidamente aparentes. Esta lista está indexada a 0, puede usar también indexada a 1, estado que utilizó.
f(0) = 0
f(1) = 1
f(2) = 1 # 0 + 1
f(3) = 2 # 1 + 1
f(4) = 3 # 1 + 2
f(5) = 5 # 2 + 3
f(6) = 8 # 3 + 5
f(7) = 13 # 8 + 5
f(8) = 12 # 8 + 1 + 3
f(9) = 7 # 1 + 3 + 1 + 2
f(10) = 10 # 1 + 2 + 7
f(11) = 8 # 7 + 1 + 0
f(12) = 9 # 1 + 0 + 8
f(13) = 17 # 8 + 9
f(14) = 17 # 9 + 1 + 7
f(15) = 16 # 1 + 7 + 1 + 7
f(16) = 15 # 1 + 7 + 1 + 6
f(17) = 13 # 1 + 6 + 1 + 5
f(18) = 10 # 1 + 5 + 1 + 3
f(19) = 5 # 1 + 3 + 1 + 0
f(20) = 6 # 1 + 0 + 5
f(21) = 11 # 5 + 6
f(22) = 8 # 6 + 1 + 1
f(23) = 10 # 1 + 1 + 8
f(24) = 9 # 8 + 1 + 0
f(25) = 10 # 1 + 0 + 9
f(26) = 10 # 9 + 1 + 0
f(27) = 2 # 1 + 0 + 1 + 0
(After this point it repeats at the 3rd term, 0-indexed)
Nota: No noté la repetición hasta que publiqué el desafío en sí, y aquí estaba pensando que sería imposible escribir otro nuevo desafío de Fibonacci.
Su tarea es, dado un número n
, generar el enésimo dígito de esta secuencia.
3 primeros dígitos: [0,1,1]
,
Patrón repetido de 24 dígitos: [2,3,5,8,13,12,7,10,8,9,17,17,16,15,13,10,5,6,11,8,10,9,10,10]
Sugerencia: puede aprovechar esta repetición para su ventaja.
Este es el código de golf , el conteo de bytes más bajo es el ganador.
BONIFICACIÓN: Si utiliza la repetición en su respuesta, otorgaré la respuesta de conteo de bytes más baja que aproveche la repetición en la secuencia de una recompensa de 100 puntos. Esto debe enviarse como parte de su respuesta original, después de su respuesta original. Vea esta publicación como un ejemplo de lo que estoy hablando: https://codegolf.stackexchange.com/a/108972/59376
Para calificar para este bono su código debe ejecutarse en tiempo constante ( O(1)
) con una explicación.
Ganador de bonificación: Dennis https://codegolf.stackexchange.com/a/108967/59376 <Dennis ganó.
Implementación más exclusiva: https://codegolf.stackexchange.com/a/108970/59376
(También recibirá 100 puntos, finalizados después de elegir la respuesta correcta)
%24
a una solución "normal"?
O(1)
. Su código debe ejecutarse en tiempo constante, si realmente está explotando la repetición.