Herausforderung
Schreiben Sie ein Programm, das die Texte zu 99 Flaschen Bier ausgibt, aber anstelle von "beer" "fizz" aus, wenn die Anzahl der Flaschen an der Wand ein Vielfaches von 3 ist, und "buzz", wenn es ein Vielfaches von 5 ist "Fizzbuzz", wenn es ein Vielfaches von 3 und ein Vielfaches von 5 ist. Wenn die Anzahl der Flaschen an der Wand nicht ein Vielfaches von 3 oder 5 ist, geben Sie einfach wie gewohnt "Bier" aus.
Text
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.
Dies ist Code-Golf , also gewinnt die kürzeste Einsendung in jeder Sprache.
code-golf
string
kolmogorov-complexity
musicman523
quelle
quelle
Antworten:
Python 2 ,
263253245 BytesProbieren Sie es online!
quelle
['ab','cd'][x]
kann umgeschrieben werden als'acbd'[x::2]
, nur um ein paar Bytes zu sparenC (GCC)
276274 BytesVielen Dank an Neil für das Speichern von zwei Bytes!
Wer liebt nicht unvergleichliche Klammern in Makro-Erweiterungen?
Ungolfed:
Sehen Sie es live auf Coliru!
Alternative Version (276 Byte)
quelle
#define w" on the wall"
zu*w=" on the wall"
.#define w
mit*w=
Bytes dort zu speichern. Ehrlich gesagt kenne ich mich mit Golf C nicht so gut aus, aber ich vermute, dass esw
ein implizit definiertes globales Zeichen ist *.#define
dw
ein String-Literal ist, das automatisch mit benachbarten String-Literalen eingefügt wird. Wennw
es sich um eine Variable handelt, muss ich die tatsächliche Zeichenfolgenformatierung verwendenprintf
.Röda , 273 Bytes
Probieren Sie es online!
Wird am Morgen weiter Golf spielen.
quelle
PHP, 242 Bytes
Probieren Sie es online!
PHP, 244 Bytes
Probieren Sie es online!
benutze die Funktion strtr
PHP, 245 Bytes
Probieren Sie es online!
Verwenden Sie eine anonyme Funktion in der Zeichenfolge, um abhängig von der Ganzzahl einen Bildausschnitt zu erhalten
Erweitert
quelle
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
in Kombination mit der anonymen Funktion gegeben, die in dieser Version 1 Byte spart05AB1E ,
151146143 BytesProbieren Sie es online!
quelle
SOGL ,
136135134133131 BytesZuallererst die 3. Funktion:
Die erste Funktion:
Die zweite Funktion:
Und der Hauptteil:
Verlor ein paar Bytes wegen eines Fehlers,
O
der eine neue Zeile davor und danach setzt (und irgendwie geht das zurück auf V0.9 (das ist V0.11 Code))quelle
Java,
344340339 Bytes(-4 Bytes nach dem Golfspielen von Fizzbuzz; -1 Bytes beim Entfernen von Leerzeichen)
Etwas ungolfed (mit 1-stelligem Einzug, um horizontales Scrollen zu vermeiden):
quelle
JavaScript (ES6),
316309 ByteDies ist eher ein vollständiges Programm als eine Funktion. Nichts sehr kreatives, es ist nur der naive Ansatz (daher der bytecount!). Ich benutze
console.log()
stattdessen,alert()
weil viele Browser die Anzahl der Zeichen, die mit angezeigt werden können, begrenzenalert()
. Beachten Sie, dass alle Leerzeichen und Zeilenumbrüche erforderlich sind.Ungolfed:
Hier ist das Snippet:
Übrigens, mit dieser Antwort habe ich mir das Bronze-Abzeichen im Code-Golf verdient ! Ich hätte nie gedacht, dass ich das jemals schaffen werde (nicht, dass es eine große Leistung ist.)!
quelle
d
Funktion benötigt keine()
s, da sie rechtsassoziativ?:
ist, aber Sie können mit sogar noch mehr Bytes sparend=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer"
.Netzhaut , 230 Bytes
Probieren Sie es online! Erläuterung:
Fügt 99
_
s ein.Ändert alle bis auf die letzte
_
Zeichenfolge in die ZeichenfolgeTake one down and pass it around, $.'#.¶¶$.'#, $.'.¶
, wobei¶
es sich um eine neue Zeile handelt und$.'
die Anzahl der verbleibenden Unterstriche. Dies zählt effektiv von 98 auf 1 zurück.Fügt die erste Zeile des ersten Verses im "kompakten" Format hinzu.
Fügt die zweite Zeile des letzten Verses hinzu. Warum ich durch Reifen springen muss, um das zu verwenden,
_
weiß ich nicht, aber$
scheint zweimal zusammenzupassen, also kann ich das nicht verwenden. Stelle dir das vor.Ersetzt eine Zeichenfolge, die im Vers mehrmals vorkommt.
Dies stimmt mit den ganzen Zahlen in den Versen überein und fügt die entsprechende (n) Flasche (n) hinzu und wird zur Vorbereitung der Auswahl des Getränks wieder auf "unär" erweitert. (Auf
99
diese Weise spare ich 1 Byte ein .)Ersetzen Sie die genauen Vielfachen durch das entsprechende Getränk.
quelle
sed ,
468459456 BytesProbieren Sie es online!
Benötigt
-r
Flagge.Erläuterung
Hold space enthält das Muster aus zwei sich wiederholenden Zeilen, wobei die Zahlen als
[A-I][0-9]
(separate Ziffern für Zehner und Einsen) und die Art des Getränks alsX*Y*Z
, wobeiX
der Überblick über-N mod 3
undY
behalten werden-N mod 5
.Bei jeder nachfolgenden Iteration werden die Zahlen dekrementiert und die Werte für
X
s undY
s aktualisiert. Dann wird Hold Space in den Pattern Space kopiert, in Zeilen des Songs umgewandelt und gedruckt.quelle
C
349345344 BytesNa siehst du. Das hat eine Stunde gedauert.
Probieren Sie es online!
quelle
Javascript (ES6),
236234233232 BytesDemo
Ungolfed
quelle
Ruby , 261 Bytes
Probieren Sie es online!
quelle
shortC ,
314312 BytesEntschuldigung, es gibt keine Erklärung, aber ich habe völlig vergessen, wie das funktioniert.
quelle
Kohle ,
307297 BytesProbieren Sie es online!
JA WIR KÖNNEN! Link zur ausführlichen Version, hier kann man sicher viel Golf spielen.
quelle
⁺
s sieht verdächtig aus ...tcl, 298
Demo
quelle