En FizzBuzz tradicional, se le pide que imprima los números del 1 al 100, pero reemplaza cada múltiplo de 3 con "Fizz", cada múltiplo de 5 con "Buzz" y cada múltiplo de 3 y 5 (es decir, 15) con " FizzBuzz ".
Sin embargo, como un mal entrevistador, inventé mi propia versión retorcida de FizzBuzz, que decidí nombrar BizzFuzz y darle en una entrevista de codificación.
Las reglas del juego son:
Imprima cada número del 1 al 100, excepto si el número cumple con una de las siguientes condiciones.
- Si el número es divisible por 4, imprima "Fizz".
Si el número es divisible por 5, imprima "Buzz".
Si el número es divisible por 4, pero el número inmediatamente después de ser divisible por 5, imprima "FizzBuzz" en lugar de "Fizz" e imprima el siguiente número regularmente.
Si el número es divisible por 5, pero el número inmediatamente después de ser divisible por 4, imprima "BuzzFizz" en lugar de "Buzz" e imprima el siguiente número regularmente.
Si el número es inmediatamente anterior a un número divisible entre 4 y 5, imprima "Bizz".
Si el número es inmediatamente después de un número divisible entre 4 y 5, imprima "Fuzz".
Si el número es divisible entre 4 y 5, imprima "BizzFuzz".
El código más corto para implementar todas estas reglas en cualquier idioma gana.
fuente
Python, 114
Solución original ( 131 ):
fuente
Pitón 2, 131
fuente
r
calcularlo en menos caracteres, c) poniendo todo en una línea: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
que sea diabólico!exec
/eval
combo es 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)
Una implementación de referencia no protegida en Python que implementa todas las reglas literalmente (420 caracteres):
fuente
Pitón, 150
Esta es una derivada de la respuesta minitechs (anterior), pero he exprimido lo suficiente para hacer la mía:
La versión desadaptada no es mucho más legible, pero la
r
que usaba el minitech solo se activa si en la próxima iteración la suma sia,b
es1,0
o0,4
, lo que es equivalente a,i%4 or i%5 == 0
por lo que solo aparecería en esas circunstancias. Por lo tanto, fue posible eliminar la asignación y el cálculor
y derivarlo del valor actual dei
usara
yb
:También incluye las sugerencias de @ WolframH.
fuente
[1,4]
(y use(1,4)
o{1,4}
además) y antes{
.[]
espacio. Me preguntaba por qué usaste{}
en tu respuesta original.R: 170 caracteres
fuente
Tcl, 185 caracteres
fuente
while
bucles se pueden reemplazar portime
construcciones para guardar bytes