Escreva um programa ou função nomeada que produzirá ou retornará a sequência até o n
número inteiro na sequência Iccanobif, documentada no OEIS como A014258 . Observe que apenas o elemento zeroth na sequência ( 0
) será impresso se n
for zero.
A sequência é gerada iniciando como a sequência padrão de Fibonacci, mas após adicionar os dois números anteriores, você inverte o resultado e elimina os zeros à esquerda. Um fato interessante, pelo menos para mim, é que essa sequência não está aumentando estritamente (veja a lista abaixo). Também parece ser (e provavelmente é) estritamente maior ou igual à sequência de Fibonacci.
A entrada do seu programa deve ser um número inteiro.
Os primeiros 20 números da sequência são fornecidos aqui para seu prazer visual:
0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769
As brechas padrão são proibidas.
O programa mais curto vence.
EDIT: Adicionada uma nota para esclarecer que a sequência começa com o elemento zeroth e deve ser incluída se n
for zero.
Exemplo de possibilidades de E / S:
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]
Agora que existem várias respostas, abaixo estão minhas implementações no Python 2 que trabalhei duro para ocultar com a marcação:
Iterativo:
#Mais próximo ao meu programa inicial. 73 bytes. Note-se também que este programa não pode atingir um estouro de pilha. É executado por n = 5000 em 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:
# Observe que isso imprimen
novas linhas à direita. 64 bytes. Acertará um erro de estouro de pilha 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'';