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'';
Respostas:
Pitão,
171514Experimente online
A implementação muito básica, começa com
range(2)
e adiciona um número de elementos igual à entrada e, em seguida,corta os extras esai do último elemento.Obrigado @Jakube por apontar a
>
reversão.Explicação
fonte
Python 2, 58 bytes
Usa
str
para converter em vez de backticks, porque números grandes o suficiente no Python 2 são escritos com um L no final. Tentei uma função recursiva, mas ficou mais tempo (61):fonte
Julia, 79 bytes
Isso cria uma função que aceita um número inteiro como entrada e retorna uma matriz inteira.
Ungolfed + explicação:
Exemplos:
fonte
T-SQL, 149
Função de tabela embutida muito direta que usa uma consulta CTE recursiva. Como ele está usando INTs, esse valor chega a 37. A adição de CASTs para bigints permitirá que ele vá além de 63
É usado da seguinte maneira
fonte
K,
2523 bytesUma modificação simples de um dos exemplos em No Stinks Loops .
A frase
.|$
converte um número em uma sequência, reverte-a e depois avalia-a.Editar:
Atenção desleixada às condições de contorno da minha parte. Mais correto agora:
Edição 2:
(x+1)#
pode ser substituído por-1_
, salvando 2 caracteres. O espaço é necessário porque, caso contrário,_x
seria um identificador, quando eu quero que o operador "drop" seja aplicado a uma variável chamadax
.fonte
Haskell,
6449 bytesExemplo de uso:
q 15
->[0,1,1,2,3,5,8,31,93,421,415,638,3501,9314,51821,53116]
Como funciona:
!
cria recursivamente uma lista infinita de números do iccanobif começando com seu primeiro argumento (o segundo argumento deve ser o próximo número do iccanobif).q
pega os primeirosn
números da lista iccanobif começando com1, 1
e precede a0
.fonte
CJam, 18 bytes
Como funciona
Experimente online aqui
fonte
Java -
126124Eu não vejo Java em torno deste site há algum tempo ...
f(5)
impressões0 1 1 2 3 5 8 31 93 421 415 638
fonte
...System.out.println(c);
Integer.valueOf(
pornew Long(
(e altere também oint
looplong
for). Se você preferir apenas trabalhar com números inteiros,new Integer(
ainda será menor queInteger.valueOf(
.SWI-Prolog,
141131121 bytesa(17,X).
Saídas em execução :Demora cerca de 10 segundos para produzir o resultado
a(10000,X).
no meu computador.Edit: A versão de 121 bytes acima é uma definição de um predicado = um forro. A versão antiga de 131 bytes é a seguinte (deve ser executada como
p(17,X)
):fonte
> <> (Peixe)
592254 bytesNão era super golfista (42/43 espaços em branco que não fazem nada e um total de 30 tokens de redirecionamento), mas foi um exercício interessante para fazê-lo funcionar em primeiro lugar.
Você pode testá-lo aqui , fornecendo o comprimento desejado na pilha inicial.
EDIT: Mais do que a contagem de bytes pela metade
fonte
PHP,
114, 109 bytesNada extravagante, apenas um algoritmo médio de fibonacci com a mágica reversa de cordas.
Ungolfed:
fonte
Excel VBA, 279 bytes
A execução da macro solicitará que o usuário insira um valor para n.
Os resultados serão impressos linha por linha na coluna A:
fonte
JavaScript (ES2015),
8173 bytesExecutando esta função (nomeada
f
) com6
:fonte
Pip , 13 bytes
Tenho certeza de que todos os recursos usados neste programa estavam presentes no Pip antes que essa pergunta fosse feita.
Recebe entrada como argumento da linha de comando. Experimente online!
Explicação
Os valores das duas variáveis evoluem da seguinte forma:
fonte
Pushy , 18 bytes (não concorrente)
Experimente online!
Não é o mais elegante dos programas, mas funciona.
fonte
Gelatina , 9 bytes (não concorrente)
Experimente online!
fonte
R, 134 bytes
Exemplo:
Gostaria de ver se alguém tem uma alternativa R melhor do que pegar seu número, transformá-lo em uma string, inverter e transformá-lo novamente em um número novamente.
fonte
Groovy, 70 bytes
fonte