No FizzBuzz tradicional, você é solicitado a imprimir os números de 1 a 100, mas substituindo cada múltiplo de 3 por "Fizz", cada múltiplo de 5 por "Buzz" e todos os múltiplos de 3 e 5 (ou seja, 15) por " FizzBuzz ".
No entanto, como um entrevistador malvado, inventei minha própria versão distorcida do FizzBuzz, que decidi nomear o BizzFuzz e dar a você em uma entrevista de codificação.
As regras do jogo são:
Imprima cada número de 1 a 100, exceto se o número atender a uma das condições abaixo.
- Se o número é divisível por 4, imprima "Fizz".
Se o número for divisível por 5, imprima "Buzz".
Se o número é divisível por 4, mas o número imediatamente após ser divisível por 5, imprima "FizzBuzz" em vez de "Fizz" e imprima o próximo número regularmente.
Se o número é divisível por 5, mas o número imediatamente após ser divisível por 4, imprima "BuzzFizz" em vez de "Buzz" e imprima o próximo número regularmente.
Se o número estiver imediatamente antes de um número divisível por 4 e 5, imprima "Bizz".
Se o número for imediatamente após um número divisível por 4 e 5, imprima "Fuzz".
Se o número é divisível por 4 e 5, imprima "BizzFuzz".
O código mais curto para implementar todas essas regras em qualquer idioma vence.
fonte
Python, 114
Solução original ( 131 ):
fonte
Python 2, 131
fonte
r
calculá-lo em menos caracteres, c) colocar tudo em uma linha:r,F,B,Z,I=1,'Fizz','Buzz','Fuzz','Bizz'\nfor i in range(1,101):a,b=i%4,i%5*4;print~-r and i or{5:Z,19:I,a:B,b:F,3:B+F,16:F+B,0:I+Z}.get(a+b,i);r=3!=a+b!=16
print 1!=a+b!=4
isso é diabólico!exec
/eval
combo é diabólico;)print{5:Z,19:I,a:B,b:F,3:B+F,16:F+B,0:I+Z,1:i,4:i}.get(a+b,i)
Uma implementação de referência ungolfed em Python que implementa todas as regras literalmente (420 caracteres):
fonte
Python, 150
Isso é derivado da resposta minitechs (anterior), mas eu o extraí o suficiente para criar a minha:
A versão degolfada não é muito mais legível, mas a
r
minitech que estava usando é acionada apenas se, na próxima iteração, a soma sea,b
fosse1,0
ou0,4
, ou seja , o que é equivalente ai%4 or i%5 == 0
isso, apenas apareceria nessas circunstâncias. Portanto, foi possível remover a atribuição e o cálculo der
e derivá-lo do valor atual dei
usara
eb
:Também inclui as sugestões de @ WolframH.
fonte
[1,4]
(e use(1,4)
ou{1,4}
além) e antes{
.[]
espaçamento. Fiquei me perguntando por que você usou{}
sua resposta original.R: 170 caracteres
fonte
Tcl, 185 caracteres
fonte
while
loops podem ser substituídos portime
construções para salvar bytes