Escriba un programa o función con nombre que generará o devolverá la secuencia hasta el n
número entero en la secuencia Iccanobif, documentada en OEIS como A014258 . Tenga en cuenta que solo 0
se imprimirá el elemento cero en la secuencia ( ) si n
es cero.
La secuencia se genera comenzando como la secuencia estándar de Fibonacci, pero después de sumar los dos números anteriores, cambia el resultado y elimina los ceros iniciales. Un hecho interesante, al menos para mí, es que esta secuencia no está aumentando estrictamente (ver la lista a continuación). También parece ser (y probablemente sea) estrictamente mayor o igual que la secuencia de Fibonacci.
La entrada de su programa debe ser un número entero.
Los primeros 20 números de la secuencia se proporcionan aquí para su placer visual:
0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769
Las lagunas estándar están prohibidas.
El programa más corto gana.
EDITAR: se agregó una nota para aclarar que la secuencia comienza con el elemento cero y debe incluirse si n
es cero.
Ejemplo de posibilidades de IO:
0 -> 0
1 -> 0 1
6 -> 0 1 1 2 3 5 8
17 -> [0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297]
Ahora que hay varias respuestas, a continuación están mis implementaciones en Python 2 que trabajé duro para ocultar con el marcado:
Iterativo:
#Cerca de mi programa inicial. 73 bytes. También debe tenerse en cuenta que este programa No se puede alcanzar un desbordamiento de pila. Se ejecuta para n = 5000 en menos de 10 segundos.i,a,b=input(),0,1 print a while i:print b;i,a,b=i-1,b,int(str(a+b)[::-1])
Recursivo:
# Tenga en cuenta que esto imprime lasn
nuevas líneas finales. 64 bytes. Llegará a un error de desbordamiento de pila para valores grandes de n.def f(n,i=0,j=1):print i,n and f(n-1,j,int(str(i+j)[::-1]))or'';