Desafío
Escriba un programa que emita la letra de 99 Bottles of Beer, pero en lugar de "beer", emita "fizz" si el número de botellas en la pared es múltiplo de 3, "zumbido" si es múltiplo de 5, y "fizzbuzz" si es un múltiplo de 3 y un múltiplo de 5. Si el número de botellas en la pared no es un múltiplo de 3 o 5, simplemente emita "cerveza" como de costumbre.
Letra
99 bottles of fizz on the wall, 99 bottles of fizz.
Take one down and pass it around, 98 bottles of beer on the wall.
98 bottles of beer on the wall, 98 bottles of beer.
Take one down and pass it around, 97 bottles of beer on the wall.
97 bottles of beer on the wall, 97 bottles of beer.
Take one down and pass it around, 96 bottles of fizz on the wall.
96 bottles of fizz on the wall, 96 bottles of fizz.
Take one down and pass it around, 95 bottles of buzz on the wall.
95 bottles of buzz on the wall, 95 bottles of buzz.
Take one down and pass it around, 94 bottles of beer on the wall.
....
3 bottles of fizz on the wall, 3 bottles of fizz.
Take one down and pass it around, 2 bottles of beer on the wall.
2 bottles of beer on the wall, 2 bottles of beer.
Take one down and pass it around, 1 bottle of beer on the wall.
1 bottle of beer on the wall, 1 bottle of beer.
Go to the store and buy some more, 99 bottles of fizz on the wall.
Este es el código de golf , por lo que gana la presentación más corta en cada idioma.
code-golf
string
kolmogorov-complexity
musicman523
fuente
fuente
Respuestas:
Python 2 ,
263253245 bytesPruébalo en línea!
fuente
['ab','cd'][x]
puede reescribirse como'acbd'[x::2]
, solo para guardar algunos bytesC (GCC),
276274 bytes¡Gracias a Neil por guardar dos bytes!
¿Quién no ama los paréntesis sin igual en las macro expansiones?
Sin golf:
¡Véalo en vivo en Coliru!
Versión alternativa (276 bytes)
fuente
#define w" on the wall"
a*w=" on the wall"
.#define w
con*w=
al ahorro bytes allí. Honestamente, no estoy tan familiarizado con el golf C, pero supongo que creaw
un carácter global * implícitamente definido.#define
dw
es un literal de cadena, que se pega automáticamente con literales de cadena adyacentes. Siw
es una variable, tengo que usar el formato de cadena real en el interiorprintf
.Röda , 273 bytes
Pruébalo en línea!
Jugará más golf en la mañana.
fuente
PHP, 242 bytes
Pruébalo en línea!
PHP, 244 bytes
Pruébalo en línea!
utilizar la función strtr
PHP, 245 bytes
Pruébalo en línea!
use una función anónima en la cadena para obtener una cadena dependiendo del número entero
Expandido
fuente
function x($n){return"$n bottle".($n-1?s:'')." of ".(($n%3?'':fizz).($n%5?'':buzz)?:beer);}$y=" on the wall";for($b=99;$b;){$c=x($b);echo"$c$y, $c.↵",--$b?"Take one down and pass it around":"Go to the store and buy some more",", ".x($b?:99)."$y.↵↵";}
. :)use
en combinación con la función anónima que ahorra 1 Byte en esta versión05AB1E ,
151146143 bytesPruébalo en línea!
fuente
SOGL ,
136135134133131 bytesEn primer lugar, la tercera función:
La primera función:
La segunda función:
Y la parte principal:
Perdí un par de bytes debido a un error que
O
pone una nueva línea antes y después (y de alguna manera esto vuelve a V0.9 (este es el código V0.11))fuente
Java,
344340339 bytes(-4 bytes después del golf fizzbuzz; -1 byte eliminando el espacio en blanco perdido)
Ligeramente sin golf (usando sangría de 1 espacio para eliminar el desplazamiento horizontal):
fuente
JavaScript (ES6),
316309 bytesEste es un programa completo en lugar de una función. Nada muy creativo, es solo el enfoque ingenuo (¡de ahí el bytecount!). Estoy usando en
console.log()
lugar dealert()
porque muchos navegadores tienen un límite en la cantidad de caracteres que se pueden mostrar usandoalert()
. Tenga en cuenta que todos los espacios en blanco y las nuevas líneas son necesarios.Sin golf:
Aquí está el fragmento:
Por cierto, con esta respuesta, ¡me he ganado la insignia de bronce en code-golf ! ¡Nunca pensé que lograría esto nunca (aunque no es que sea un gran logro)!
fuente
d
función no necesita ninguna()
s porque?:
es asociativa a la derecha, pero en realidad puede guardar aún más bytes usandod=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer"
.Retina , 230 bytes
Pruébalo en línea! Explicación:
Insertos 99
_
s.Cambia todos menos el último
_
a la cadenaTake one down and pass it around, $.'#.¶¶$.'#, $.'.¶
, donde¶
es una nueva línea y$.'
es el recuento de guiones bajos restantes. Esto efectivamente cuenta de 98 a 1.Agrega la primera línea del primer verso en formato "compacto".
Agrega la segunda línea del último verso. Por qué necesito saltar a través de aros para usar el
_
No lo sé, pero$
parece coincidir dos veces, por lo que no puedo usar eso. Imagínate.Sustituye una cadena que aparece varias veces en el verso.
Esto coincide con los números enteros en los versos, y sufija la (s) botella (s) apropiada (s) y se expande nuevamente a unario, en preparación para elegir la bebida. (Ahorro 1 byte en el
99
s de esta manera).Reemplace los múltiplos exactos con la bebida adecuada.
fuente
sed ,
468459456 bytesPruébalo en línea!
Requiere
-r
bandera.Explicación
Hold space mantiene el patrón de dos líneas repetidas, con números representados como
[A-I][0-9]
(dígitos separados para decenas y unidades ) y el tipo de bebida representada comoX*Y*Z
, dondeX
realiza un seguimiento de-N mod 3
yY
de-N mod 5
.En cada iteración posterior, los números se hacen decremented y las
X
s yY
s se actualizan. Luego, el espacio de espera se copia en el espacio del patrón, se convierte en líneas de la canción y se imprime.fuente
C,
349345344 bytesBueno, allá vas. Eso tomó una hora.
Pruébalo en línea!
fuente
Javascript (ES6),
236234233232 bytesManifestación
Sin golf
fuente
Rubí , 261 bytes
Pruébalo en línea!
fuente
shortC ,
314312 bytesLo siento, no hay explicación, pero olvidé por completo cómo funciona esto.
fuente
Carbón ,
307297 bytesPruébalo en línea!
¡SI PODEMOS! Enlace a la versión detallada, esto se puede jugar mucho, estoy seguro.
fuente
⁺
s parece sospechosa ...tcl, 298
manifestación
fuente