Fibonacci + FizzBuzz = Fibo Nacci!
Seu desafio é criar um programa Fibo Nacci!
- Um programa Fibo Nacci gera os 100 primeiros números de Fibonacci (começando em 1).
- Se o número de Fibonacci é divisível por 2 e 3 (ou seja, é divisível por 6), emita o FiboNacci em vez do número.
- Caso contrário, se o número de Fibonacci for divisível por 2, emita o Fibo em vez do número.
- Caso contrário, se o número de Fibonacci for divisível por 3, emita Nacci em vez do número.
Regras
- O programa não deve receber entrada.
- O programa deve gerar uma nova linha (
\n
) após cada entrada. - O programa não deve imprimir nada no STDERR.
- O programa deve gerar as primeiras 100 entradas Fibo Nacci (iniciando em 1).
- As brechas padrão não são permitidas (por padrão).
- Este é o código-golfe, pelo que o código mais curto em bytes vence!
Aqui está a saída esperada:
1
1
Fibo
Nacci
5
Fibo
13
Nacci
Fibo
55
89
FiboNacci
233
377
Fibo
Nacci
1597
Fibo
4181
Nacci
Fibo
17711
28657
FiboNacci
75025
121393
Fibo
Nacci
514229
Fibo
1346269
Nacci
Fibo
5702887
9227465
FiboNacci
24157817
39088169
Fibo
Nacci
165580141
Fibo
433494437
Nacci
Fibo
1836311903
2971215073
FiboNacci
7778742049
12586269025
Fibo
Nacci
53316291173
Fibo
139583862445
Nacci
Fibo
591286729879
956722026041
FiboNacci
2504730781961
4052739537881
Fibo
Nacci
17167680177565
Fibo
44945570212853
Nacci
Fibo
190392490709135
308061521170129
FiboNacci
806515533049393
1304969544928657
Fibo
Nacci
5527939700884757
Fibo
14472334024676221
Nacci
Fibo
61305790721611591
99194853094755497
FiboNacci
259695496911122585
420196140727489673
Fibo
Nacci
1779979416004714189
Fibo
4660046610375530309
Nacci
Fibo
19740274219868223167
31940434634990099905
FiboNacci
83621143489848422977
135301852344706746049
Fibo
Nacci
O Catálogo
O Snippet de Snack Stack na parte inferior desta postagem gera o catálogo a partir das respostas a) como uma lista da solução mais curta por idioma eb) como uma tabela geral de líderes.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
## Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números em seu cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou deseja listar as penalidades de sinalizador de intérprete separadamente), verifique se a pontuação real é o último número no cabeçalho:
## Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
fonte
Respostas:
Pitão, 37 bytes
Eu percorro os números de Fibonacci em vez de gerá-los antecipadamente, já que é muito curto.
Experimente online.
fonte
Python 2, 62 bytes
Não muito diferente do FizzBuzz padrão, na verdade.
fonte
Metaprogramação em C ++ 11, 348 bytes
Porque porque não? Ele é compilado com
warning C4307: '+': integral constant overflow
, é executado bem, mas 93+ dos números de Fibonacci não são mostrados corretamente (devido ao estouro), portanto, essa é uma entrada inválida (mas não consegui vencê-la com tantos bytes)Ungolfed
fonte
template <char H, char ...T>
) em seus modelos para (teoricamente) manipular valores de comprimento arbitrário. Em seguida, ele seria apenas uma questão de examinar os últimos 2 caracteres em cada corda para determinar a divisibilidade por 2 e / ou 3.__uint128_t
, talvez.C #,
175 171 152145 145 bytesDescomprimido:
fonte
==0
por>0
e invertendo os ternários:class c{static void Main(){for(System.Numerics.BigInteger a=1,b=1,c=0;c++<100;b=a+(a=b))System.Console.WriteLine(a%6>0?a%2>0?a%3>0?a:(object)"Nacci":"Fibo":"FiboNacci");}}
decimal a=1,b=1
adynamic a=1m,b=a
e, em seguida, você pode perder o(object)
:)Oracle SQL, 212 bytes
Não é uma língua de golfe, mas eu tive que tentar ...
Concatenando todas as linhas com
\n
:SQLFIDDLE
Ou com uma entrada da sequência por linha (162 bytes):
fonte
The program should output a new line (\n) after every entry
, deixarei como o código mais longo, mas o mais curto poderá ser compatível (sem depender de uma CLI) adicionando||CHR(13)
antes da finalFROM
para 171 caracteres."\n"
? Parece funcionar no MySQL. (Correndoselect length("\n")
retorna 1, e em execuçãoselect "\n"
não retornan
, como acontece comselect "\p"
os retornosp
devido a ser uma fuga inválido)SELECT LENGTH('\n') FROM DUAL
saídas2
no Oracle, pois'\n'
não é convertido emCHR(13)
.ShapeScript , 83 bytes
Experimente online!
fonte
Java,
407398351308 bytesJogou golfe com a ajuda de @Geobits e @SamYonnou
Espalhe a palavra:
Verbose == Java
Versão não destruída:
fonte
java.math.*
vez da coisa toda. Use as constantes paraONE
e emZERO
vez denew
BigIntegers. Remova opublic
da classe. Empacote tudo, exceto aprintln
declaração nofor
corpo dentro da declaração do loop, etc. Eu recomendo examinar as dicas de golfe em Java em geral.BigInteger
e suas várias técnicas de golfe.import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,z=a,t=a.flipBit(1),h=t.flipBit(0),s=t.flipBit(2);for(int i=0;i<100;i++){System.out.println(b.mod(s).equals(z)?"FiboNacci":b.mod(t).equals(z)?"Fibo":b.mod(h).equals(z)?"Nacci":b);c=a;a=b;b=c.add(b);}}}
BigInteger
sempre retornaBigInteger.ZERO
quando alguma operação éadd(...)
avaliada como zero, para que você possa usar em==
vez de.equals(z)
, também pode acabar com o armazenamentos=t.flipBit(2)
(6) e, em vez disso,import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,d,z=a,t=a.flipBit(1),h=t.flipBit(0);for(int i=0;i<100;i++){System.out.println((c=b.mod(t)).add(d=b.mod(h))==z?"FiboNacci":c==z?"Fibo":d==z?"Nacci":b);c=a;a=b;b=c.add(b);}}}
executar algumas tarefas internas inteligentes como estas : essas alterações o reduzem para 280Verbose.isEqualTo(Java)
Mathematica, 80 bytes
Adaptação da minha solução FizzBuzz mais antiga.
fonte
Echo
porPrint
.Ruby,
7166 bytesungolfed:
fonte
f,n=%w[Fibo Nacci]
,f,n='Fibbo','Nacci'
ef='Fibbo';n='Nacci'
todos têm a mesma contagem de caracteres. +1[b,f='Fibo',n='Nacci',f,b,f+n][~b%6]
e mais dois removendo os parêntesesa=b+b=a
.~
operador. Nunca vi isso antes. E agora eu sei porque índices negativos fazem parte do rubi :)puts [
vez deputs[
?> <> , 116 bytes
Experimente online!
fonte
3%
seçõesPyth, 39
Muito semelhante à solução fizzbuzz padrão, apenas com um gerador para os números de Fibonacci.
Experimente aqui
fonte
C #,
498392320 bytesEu realmente queria fazer isso com o linq, pena que tive que escrever minha própria função de soma para o BigInteger que realmente a matou :-(
Ungolfed:
Edit: Até 320 bytes, graças a LegionMammal978 pela sugestão agregada e graças à resposta C # da olegz para a abreviação x% 6 para X% 2 && x% 3, bem como o uso de operadores ternários em uma única instrução WriteLine.
fonte
Aggregate
função LINQ?Python 2,
171121 bytes"Abordagem de força bruta."
fonte
Javascript,
93 9086 bytesfonte
a=[b,b=a+b][0]
parab=a+b,a=b-a
. Além disso, em uma nota completamente alheios, eu gosto da maneira como você responder como muito rápido no Stack Overflow hehe Tenha um bom diaPython 2, 100 bytes
Para os números grandes, adiciona um
L
ao final, mostrando que é um número longo.Se isso for um problema, aqui está uma solução de 104 bytes
fonte
for
loop usando esta dica: codegolf.stackexchange.com/a/5047/42736 . Em particular, aexec
dica parece boa.exec <program_string>*n
truque. Agradável!Javascript (ES6),
137134 bytesFunção recursiva que calcula fibonnacci, coloca-a em uma matriz, emite saída Fibo, Nacci ou o número e chama-se para calcular a seguir até 100.
Ele quebra em 73 por causa da precisão do número javascript. A única maneira de contornar isso seria adicionar meu próprio cálculo de bits.
fonte
5527939700884757 + 8944394323791464 = 14472334024676220
quando deveria ser,14472334024676221
porque o JavaScript usa flutuadores de precisão de 16 bits e isso requer 17 bits de precisão. Você também deve imprimir1
duas vezes.QBasic,
144141 bytesNão é particularmente pequeno, mas supera C ++ e C #
Nenhuma declaração, usada
:
sempre que possível, porque é 1 byte mais barato queCRLF
. Prefixo um 0 ao contador de loop: o Basic transbordará no 47º caractere de Fibonacci, portanto compensado pelo byte extra que deveria estar lá.EDIT: Neil me salvou 3 bytes: 141 bytes.
fonte
a$+
já que é conhecido como a sequência vazia neste momento.Wolfram Language, 84 bytes
Tipo de trapaça, é claro, por causa do embutido
Fibonacci
.Exemplo de comando para executar o script
fonte
Perl, 74 bytes
Requer a seguinte opção de linha de comando:,
-lMbigint
contada como 8.Uso da amostra
Perl, 79 bytes
O mesmo que acima, sem exigir nenhuma opção de linha de comando.
fonte
GolfScript, 47 bytes
Explicação
fonte
PARI / GP,
7673 bytesSalvo três bytes, cortesia de Mitch Schwartz .
Uso da amostra
fonte
for(i=b=!a=1,99,b=a+a=b; ...
fibo
;)> <>,
128119 bytesEu
descaradamente roubeiemprestado um programa existente do FizzBuzz e modifiquei-o para funcionar na sequência Fibo Nacci.Emite números para sempre.Agora está fixo, ou seja, gera apenas 100 números. Experimente aqui .fonte
Pitão, 51 bytes
Gera a sequência de Fibonacci e decide o que imprimir.
Para testar, tente isso (apenas os 20 primeiros números)
fonte
Clojure, 127 bytes
Ungolfed:
Alguns truques usados:
def
que dá a sequência de Fibonacci é roubado descaradamente de Konrad Garus .str
pode receber símbolos como entrada. Louco, né?if
em alguns casos.fonte
lazy-cat
?[1 1]
) com o resultado da soma de cada elemento na sequência de Fibonacci com o elemento a seguir.fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
?CJam, 44 bytes
Experimente online no intérprete CJam .
fonte
dc,
1008979 bytesInspirado em http://c2.com/cgi/wiki?DeeCee
fonte
Javascript (ES2015), 99 bytes
Ungolfed:
fonte
alert
vez deconsole.log
; remove alguns bytes.F #,
202 163149 bytesEste é um arquivo FSX (script F #)
fonte
PHP, 75 bytes
Surpreendentemente competitivo. Requer PHP v5.5 ou superior. Eu assumo as configurações padrão, pois elas estão sem um .ini (você pode desativar o .ini local com a
-n
opção).Uso da amostra
fonte
-n
bcadd
não funciona mesmo quandobcmath
está instalado. Sem-n
muitas coisas, é emitido no stderr.Prolog, 182 bytes
Experimente online aqui.
Para executar o programa, use a consulta:
fonte