Dado N (2 <= N ), imprima N linhas da letra Fibonacci série como esta (ie N = 5) Primeiro, comece com a
e b
:
a
b
Em seguida, adicione as duas linhas.
a
b
ab
Continue adicionando as duas últimas linhas.
a
b
ab
bab
Continue...
a
b
ab
bab
abbab
E nós terminamos.
Lembre-se, isso é código-golfe , então o código com o menor número de bytes vence.
Respostas:
Python 2, 41 bytes
Guardado 3 bytes graças a @xnor
Teste em Ideona
Simplesmente segue a definição recursiva.
fonte
a,b="ab";exec"print a;a,b=b,a+b;"*input()
.Haskell,
293532 bytesRecursão simples.
Para referência: a versão antiga (uma adaptação desta resposta ) concatenou as seqüências na ordem errada, então tive que adicionar uma
flip(...)
que a tornava muito longa (35 bytes).fonte
["b","a","ab","aba","abaab"]
05AB1E ,
1211 bytesAgradecemos a Emigna por salvar um byte!
Usa a codificação CP-1252 . Experimente online!
fonte
̓
poderia muito bem serG
que você não está usandoN
:)Geléia ,
1110 bytesExperimente online!
Como funciona
fonte
”a”b;@Ṅ
baixo parte, mas eu não conseguia descobrir onde ir de lá ... agora eu sei :-)Java 7, 69 bytes
destroçado
fonte
a
eb
. Não tenho certeza se os parâmetros"a"
e"b"
devem ser contados na contagem de bytes, pois a pergunta especifica especificamente que ele deve usara
eb
. Não que o Java vença de qualquer maneira. ;)"a"
e"b"
) em vez de 69 porque o desafio especificamente solicitadoa
eb
, e o método snipado por código atualmente usa uma entrada variável. Não sei ao certo quais são as regras em relação a algo assim, mas pessoalmente acho que deve ser contado. Caso contrário, em alguns idiomas, você poderia ter uma função que executa uma função de parâmetro e, em seguida, simplesmente fornecer toda a função de desafio no parâmetro sem contar seus bytes. Parece um tipo de regra de brecha padrão.Pressionamentos de teclas Emacs,
26, 25-ishPrograma
#npara ser lido como chave com dígito (s) n :
ARETBRETF3UPUPC-SPACEC-EM-WDOWNDOWNC-Y UPC-AC-SPACEC-EM-WDOWNC-EC-YRETF4C-#(n-2)F4
Explicação
Com n = 10
fonte
JavaScript (ES6),
4342 bytesGuardou um byte graças a @Arnauld
fonte
CJam,
1917 bytesexplicação
fonte
p
deve ser a;
. Você pode se livrar das aspas ao redor da saída se usar emn
vez dep
. Por fim,'a'b
salva dois bytes acima"a""b"
.V , 18 bytes
Experimente online!
Ou, a versão mais legível:
Explicação:
fonte
MATL , 14 bytes
Experimente online!
fonte
Python 2, 55 bytes
fonte
Retina , 33 bytes
Experimente online!
Economizou 10 (!) Bytes graças a @ MartinEnder !
Explicação
Converte a entrada para unários, subtrai
2
e adiciona oa
eb
, em seguida, de forma recursiva substitui os restantes1
s com a concatenação das duas cordas anteriores.fonte
$%`
! e essa outra captura foi apenas um mau planejamento ... Incrível, obrigado!Lote,
10293 bytesFelizmente, as variáveis são expandidas para cada linha antes que as atribuições entrem em vigor, para que eu possa definir os dois
a
eb
usar seus valores antigos sem precisar de um temporário. Editar: salvou 9 bytes graças a @ nephi12.fonte
for /l %%i in (2,1,%1) etc..
@set a=a&set b=b
como você fez com o último. embora techncally eles poderiam estar todos na mesma linha ... mas isso seria feio ... hmm ...Empilhe meu Golf, 63 bytes
Obtenha meu idioma aqui: https://github.com/cheertarts/Stack-My-Golf .
Provavelmente existe uma maneira mais curta, mas essa é a mais óbvia.
fonte
Perl,
3635 bytesInclui +3 para
-n
Contar com STDIN
fibo.pl
fonte
Perl, 45 +1 = 46 bytes
+1 byte para o sinalizador -n
Ligeira melhoria em relação à solução de 49 bytes existente, mas desenvolvida separadamente. Os parênteses para
say($a)
são necessários porque, caso contrário, ele interpreta$a,($a,$b)=($b,$a.$b)
como o argumentosay
que gera mais lixo do que o necessário.Perl, 42 bytes
Uma abordagem separada da solução acima:
Ainda não estou convencido de que não posso combinar a transliteração e a substituição em uma única operação mais curta. Se eu encontrar um, eu o publicarei.
fonte
Swift 3, 76 bytes
fonte
Perl, 48 bytes
Código de 47 bytes + 1 para
-n
.Abordagem simples. Tente usar uma fatia de matriz originalmente,
$a[@a]="@a[-2,-1]"
mas que exija$"=""
ou similar :(. Salve 1 byte graças a @ Dada !Uso
fonte
@;
vez de@a
para omitir o ponto e vírgula final (entende o que eu quero dizer?). (Eu sei, um byte é muito barato, mas eu não tinha nenhuma idéia melhor ..)perl -pe '@;=(a,b);$;[@;]=$;[-2].$;[-1]for 3..$_;say for@' <<< 5 syntax error at -e line 1, at EOF Execution of -e aborted due to compilation errors.
mas não achei que seria justo adicionar uma resposta se não pudesse fazê-lo funcionar!-pe
invés de-nE
? De qualquer forma, ele funciona no meu, então provavelmente está relacionado à sua versão ou sistema perl ... Mas confie em mim, eu testei e funciona! ;)-nE
também (não sei de onde-pe
veio! Deve ser sexta-feira ...) Vou atualizar isso quando chegar um mês! Obrigado por compartilhar!SOML , 8 bytes (não concorrente)
explicação:
A razão pela qual isso não é competitivo é porque essa linguagem ainda está em desenvolvimento e eu adicionei algumas novas funções ao escrever isso.
Além disso, 1º post no PPCG!
fonte
05AB1E, 15 bytes
fonte
C , 156 bytes (sem recuo)
Dois buffers (u & v) armazenam as duas últimas linhas. A linha mais recente (rastreada com dois ponteiros: start = c, end = d) é anexada à mais antiga (start = a, end = b). Troque (a, b) e (c, d) e faça um loop. Preste atenção ao tamanho do buffer antes de solicitar muitas linhas. Não é tão curto (como esperado de um idioma de baixo nível), mas foi divertido de codificar.
fonte
5
Given N (2 <= N), print N lines of the letter Fibonacci series like this (i.e. N = 5)
N
e não fixo. Ou o usuário pode ser alguém que usa sua função / programa.PHP,
6362 bytesVersão recursiva:
fonte
return
Pitão , 17 bytes
Um programa que recebe a entrada de um número inteiro e imprime o resultado.
Experimente online!
Como funciona
fonte
Pitão -
1615 bytesExperimente online aqui .
fonte
APL, 30 bytes.
⎕IO
deve ser1
.fonte
Mathematica, 49 bytes
Define uma função
g
que recebe a entrada numérica única; retorna uma lista de cadeias. Implementação recursiva direta, usando o operador de junção de string<>
.Mathematica, 56 bytes
Função sem nome, mesmo formato de entrada / saída como acima. Essa solução usa uma maneira alternativa de gerar as strings: cada string da lista é o resultado da substituição simultânea, na string anterior, de todas as ocorrências de "a" por "b" e todas as ocorrências de "b" por "ab".
fonte
Groovy, 79 bytes
fonte
PHP, 53 bytes
fonte
$b
a string.C ++ 11,
8998 bytes+7 bytes para todas as linhas, não apenas a última. +2 bytes a mais por
N
ser o número de linhas impressas, não algumas coisas baseadas em 0.Uso:
fonte
Ruby (1.9+) 46 bytes
fonte