"99 Flaschen Sprudel"

55

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 , also gewinnt die kürzeste Einsendung in jeder Sprache.

musicman523
quelle
30
Ich habe 95 Flaschen Sprudel. Ich nehme einen weg. Jetzt habe ich 94 Flaschen Bier. Logik.
Ok,
2
Kann ich eine Flasche Fizzbeer haben?
Stephen
1
Soll es nach der 3. Flasche einen Zeilenumbruch geben?
Kritixi Lithos
2
Ist ein Zeilenumbruch zwischen den beiden Zeilen erforderlich? Vor der Bearbeitung von Kritixi Lithos gab es keine und jetzt gibt es welche.
Dzaima
11
@Okx Na ja, Bier ist sprudelnd und begeistert ...
Draco18s

Antworten:

12

Python 2 , 263 253 245 Bytes

i=99
x=''
while i:x+=', %s on the wall.\n\n%s on the wall, %s.\n'%(('%d bottle%s of %s'%(i,'s'*(i>1),(i%3<1)*'fizz'+(i%5<1)*'buzz'or'beer'),)*3)+'GToa kteo  otnhee  dsotwonr ea nadn dp absusy  isto maer omuonrde'[i>1::2];i-=1
print x[35:]+x[:33]

Probieren Sie es online!

Stange
quelle
Das ist fantastisch! Können Sie erklären, warum das Interpolieren der Zeichenfolgen die kürzeste Option ist?
musicman523
2
Zum Beispiel ['ab','cd'][x]kann umgeschrieben werden als 'acbd'[x::2], nur um ein paar Bytes zu sparen
Rod
7

C (GCC) 276 274 Bytes

Vielen Dank an Neil für das Speichern von zwei Bytes!

#define w" on the wall"
#define c(i)printf("%d bottle%s of %s",i,"s"+!~-i,i%3?i%5?"beer":"buzz":i%5?"fizz":"fizzbuzz"),printf(
i;f(){for(i=99;i;c((i?:99))w".\n\n"))c(i)w", "),c(i)".\n"),printf(--i?"Take one down and pass it around, ":"Go to the store and buy some more, ");}

Wer liebt nicht unvergleichliche Klammern in Makro-Erweiterungen?

Ungolfed:

#define c(i)                               \
    printf(                                \
        "%d bottle%s of %s",               \
        i,                   /* Number  */ \
        i-1 ? "s" : "",      /* Plural  */ \
        i % 3                /* FizzBuzz*/ \
            ? i % 5                        \
                ? "beer"                   \
                : "buzz"                   \
            : i % 5                        \
                ? "fizz"                   \
                : "fizzbuzz"               \
    )

i;
f() {
    for(i = 99; i; ) {
        c(i); printf(" on the wall, ");
        c(i); printf(".\n");
        printf(
            --i
                ? "Take one down and pass it around, "
                : "Go to the store and buy some more, "
        );

        // This has been stuffed into the for increment
        c((i?:99)); printf(" on the wall.\n\n");
    }
}

Sehen Sie es live auf Coliru!

Alternative Version (276 Byte)

#define c(i)printf("%d bottle%s of %s",i,i-1?"s":"",i%3?i%5?"beer":"buzz":i%5?"fizz":"fizzbuzz"),printf(
i,*w=" on the wall";f(){for(i=99;i;c((i?:99))"%s.\n\n",w))c(i)"%s, ",w),c(i)".\n"),printf(--i?"Take one down and pass it around, ":"Go to the store and buy some more, ");}
QUentin
quelle
Das ist super cool! Ich bin immer wieder geschockt, wie gut C-Antworten mit der Manipulation von Zeichenfolgen sein können.
musicman523
Speichern Sie ein paar Bytes durch Änderung #define w" on the wall"zu *w=" on the wall".
MD XF
@MDXF mmh, ich bekomme genau die gleiche Byteanzahl. Vermisse ich etwas?
Quentin
Ich denke , sie soll Sie können ersetzen #define wmit *w=Bytes dort zu speichern. Ehrlich gesagt kenne ich mich mit Golf C nicht so gut aus, aber ich vermute, dass es wein implizit definiertes globales Zeichen ist *.
musicman523
4
@ musicman523 Das Problem ist, dass das #defined wein String-Literal ist, das automatisch mit benachbarten String-Literalen eingefügt wird. Wenn wes sich um eine Variable handelt, muss ich die tatsächliche Zeichenfolgenformatierung verwenden printf.
Quentin
6

Röda , 273 Bytes

f{a=`bottle`f=` on the wall`g=`99 ${a}s of fizz`;[`$g$f, $g.
`];seq 98,1|{|b|d=`s`d=``if[b=1];c=``c=`fizz`if[b%3=0];c.=`buzz`if[b%5=0];c=`beer`if[c=``];e=`$b $a$d of $c`;[`Take one down and pass it around, $e$f.

$e$f, $e.
`]}_;[`Go to the store and buy some more, $g$f.`]}

Probieren Sie es online!

Wird am Morgen weiter Golf spielen.

Kritixi Lithos
quelle
6

PHP, 242 Bytes

function f($k){return"$k bottle".(s[$k<2])." of ".([fizz][$k%3].[buzz][$k%5]?:beer);}$w=" on the wall";for($b=f($c=99);$c;)echo"$b$w, $b.
",--$c?"Take one down and pass it around":"Go to the store and buy some more",", ",$b=f($c?:99),"$w.

";

Probieren Sie es online!

PHP, 244 Bytes

for($e=s,$b=fizz,$c=99;$c;)echo strtr("301245, 30124.
6, 708295.

",[" bottle",$e," of ",$c,$b," on the wall",--$c?"Take one down and pass it around":"Go to the store and buy some more",$k=$c?:99,$e=s[2>$k],$b=[fizz][$k%3].[buzz][$k%5]?:beer]);

Probieren Sie es online!

benutze die Funktion strtr

PHP, 245 Bytes

$f=function($k)use(&$b){$b="$k bottle".(s[$k<2])." of ".([fizz][$k%3].[buzz][$k%5]?:beer);};for($w=" on the wall",$f($c=99);$c;)echo"$b$w, $b.
",--$c?"Take one down and pass it around":"Go to the store and buy some more",", {$f($c?:99)}$b$w.

";

Probieren Sie es online!

Verwenden Sie eine anonyme Funktion in der Zeichenfolge, um abhängig von der Ganzzahl einen Bildausschnitt zu erhalten

Erweitert

$f=function($k)use(&$b){$b="$k bottle".(s[$k<2])." of ".([fizz][$k%3].[buzz][$k%5]?:beer);};
for($w=" on the wall",$f($c=99);$c;)
echo"$b$w, $b.
",--$c?"Take one down and pass it around":"Go to the store and buy some more"
,", {$f($c?:99)}$b$w.

";
Jörg Hülsermann
quelle
1
Wenn ich mich nicht verzählt haben können Sie 2 Bytes (außer 250 Bytes insgesamt): 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.↵↵";}. :)
insertusernamehere
1
@insertusernamehere Du hast mit ein paar Änderungen falsch gezählt es spart 2 Bytes mehr. Dankeschön. Und Sie haben mir eine kleine Idee für die Verwendung usein Kombination mit der anonymen Funktion gegeben, die in dieser Version 1 Byte spart
Jörg Hülsermann,
5

05AB1E , 151 146 143 Bytes

99LRv'¬ž“fizzÒÖ“#y35SÖÏJ‚˜1(è©y“ƒ¶€µ„‹€ƒî倕…¡, ÿÏꀂ ÿ€‰€€íÒ.“ªõ®y“ÿÏꀂ ÿ€‰€€íÒ, “D#4£ðýs…ÿÿ.}‚‚˜'Ïê'±¥:`)¦¦¬#7£ðý¨“‚œ€„€€ƒï€ƒ‚¥€ä€£, ÿ.“ª)˜»

Probieren Sie es online!

Emigna
quelle
4

SOGL , 136 135 134 133 131 Bytes

Ƨ, o▓k
"πFT+╔¡‘oW
³³q"'bμ⁸‘oH? so}5\;3\«+"ΞQv↑χāσκN⌡κYT¡‘_,S─‘oθwoX▓
MH∫}¹±{▓WkƧ.¶oH¡"sΗ─χpēGķ¶¾3Ζ^9f.⅟▒E┌Fρ_╬a→‘KΘw⁽oXH‽M}HkW">⁸‘p

Zuallererst die 3. Funktion:

                                    ▓  name this "▓" (example input: 15)                          [15]
³³                                     Create 4 extra copies of the top thing (number of things)  [15, 15, 15, 15, 15]
  q                                    output without popping one of them                         [15, 15, 15, 15, 15]
   "...‘o                              output " bottle"                                           [15, 15, 15, 15, 15]
         H?   }                        if pop-1 [isn't 0]                                         [15, 15, 15, 15]
            so                           output "s"                                               [15, 15, 15, 15]
               5\                      push if POP divides by 5                                   [15, 15, 15, 1]
                 ;                     swap [if divides & another number copy]                    [15, 15, 1, 15]
                  3\«                  push if POP divides by 3, multiplied by 2                  [15, 15, 1, 2]
                     +                 add those together                                         [15, 15, 3]
                      "...‘            push "buzz fizz fizzbuzz beer"                             [15, 15, 3, "buzz fizz fizzbuzz beer"]
                           ...‘o       output " of " (done over here to save a byte for a quote)  [15, 15, 3, "buzz fizz fizzbuzz beer"]
                                θ      split ["buzz fizz fizzbuzz beer"] on spaces                [15, 15, 3, ["buzz","fizz","fizzbuzz","beer"]]
                                 w     get the index (1-indexed, wrapping)                        [15, 15, ["buzz","fizz","fizzbuzz","beer"], "fizzbuzz"]
                                  o    output that string                                         [15, 15, ["buzz","fizz","fizzbuzz","beer"]]
                                   X   pop the array off of the stack                             [15, 15]

Die erste Funktion:

Ƨ, o▓k
     k  name this "function" "k"
Ƨ, o    output ", "
    ▓   execute the "bottleify" function

Die zweite Funktion:

"πFT+╔¡‘oW
         W  call this "W"
"πFT+╔¡‘    push " on the wall"
        o   output it

Und der Hauptteil:

MH∫}                                     repeat 99 times, each time pushing index
    ¹                                    wrap in an array
     ±                                   reverse it
      {                                  iterate over it
       ▓                                 execute that function
        W                                execute that function
         k                               execute that function
          Ƨ.¶o                           output ".\n"
              H¡                         push if POP-1 isn't 0 (aka 1 if pop <> 1, 0 if pop == 1)
                "...‘                    push "Stake one down and pass it aroundSgo to the store and buy some more"
                     K                   push the first letter of that string
                      Θ                  split ["take one down and pass it aroundSgo to the store and buy some more" with "S"]
                       w                 gets the xth (1-indexed, wrapping) item of that array
                        ⁽o               uppercase the 1st letter and output
                          X              pop the array off
                           H‽            if pop-1 [isn't 0]
                             M           push 100
                              }          ENDIF
                               H         decrease POP
                                k        execute that function
                                 W       execute that function
                                  ">⁸‘p  output ".\n\n"

Verlor ein paar Bytes wegen eines Fehlers, Oder eine neue Zeile davor und danach setzt (und irgendwie geht das zurück auf V0.9 (das ist V0.11 Code))

dzaima
quelle
4

Java, 344 340 339 Bytes

(-4 Bytes nach dem Golfspielen von Fizzbuzz; -1 Bytes beim Entfernen von Leerzeichen)

interface X{static void main(String[]a){for(int i=99;i>0;System.out.printf("%s on the wall, %s.%n%s, %s on the wall.%n%n",b(i),b(i--),i<1?"Go to the store and buy some more":"Take one down and pass it around",b(i<1?99:i)));}static String b(int i){return i+" bottle"+(i>1?"s":"")+" of "+(i%3<1?"fizz":"")+(i%5<1?"buzz":i%3<1?"":"beer");}}

Etwas ungolfed (mit 1-stelligem Einzug, um horizontales Scrollen zu vermeiden):

interface X {
 static void main(String[]a){
  for(int i=99;i>0;System.out.printf("%s on the wall, %s.%n%s, %s on the wall.%n%n",
   b(i),b(i--),
   i<1?"Go to the store and buy some more":"Take one down and pass it around",
   b(i<1?99:i)));
 }
 static String b(int i){
  return i+" bottle"+(i>1?"s":"")+" of "+(i%3<1?"fizz":"")+(i%5<1?"buzz":i%3<1?"":"beer");
 }
}
hjk
quelle
4

JavaScript (ES6), 316 309 Byte

Dies 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, begrenzen alert(). Beachten Sie, dass alle Leerzeichen und Zeilenumbrüche erforderlich sind.

a="";for(i=99;i>0;i--){b=j=>"bottle"+(j>1?"s":"");d=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer");w=" on the wall";o=" of ";a+=`${i+" "+b(i)+o+d(i)+w+", "+i+" "+b(i)+o+d(i)}.
${i>1?"Take one down and pass it around, ":"Go to the store and buy some more, "}${(y=i-1?i-1:99)+" "+b(y)+o+d(y)+w}.

`;}console.log(a)

Ungolfed:

let accumulator = "";
for(let i = 99; i>0; i--){
    let bottleString = j => "bottle"+(j>1?"s":""),
    drink = a =>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer",
    wallString = " on the wall",
    of=" of ";
    accumulator += `${i+" "+bottleString(i)+of+drink(i)+wallString+", "+i+" "+bottleString(i)+of+drink(i)}.
${i>1?"Take one down and pass it around, ":"Go to the store and buy some more, "}${(y=i-1?i-1:99)+" "+bottleString(y)+of+drink(y)+wallString}.

`;
}

console.log(accumulator);

Hier ist das Snippet:

a="";for(i=99;i>0;i--){b=j=>"bottle"+(j>1?"s":"");d=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer";w=" on the wall";o=" of ";a+=`${i+" "+b(i)+o+d(i)+w+", "+i+" "+b(i)+o+d(i)}.
${i>1?"Take one down and pass it around, ":"Go to the store and buy some more, "}${(y=i-1?i-1:99)+" "+b(y)+o+d(y)+w}.

`;}console.log(a)

Übrigens, mit dieser Antwort habe ich mir das Bronze-Abzeichen im verdient ! Ich hätte nie gedacht, dass ich das jemals schaffen werde (nicht, dass es eine große Leistung ist.)!

Arjun
quelle
Ihre dFunktion benötigt keine ()s, da sie rechtsassoziativ ?:ist, aber Sie können mit sogar noch mehr Bytes sparen d=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer".
Neil
3

Netzhaut , 230 Bytes


99$*_
_\B
Take one down and pass it around, $.'#.¶¶$.'#, $.'.¶
^
99#, 99.¶
_
Go to the store and buy some more, 99#.
#
 on the wall
1\b|(\d+)
$& bottle$#1$*s of $&$*_
\b(_{15})+\b
fizzbuzz
\b(_{5})+\b
buzz
\b(___)+\b
fizz
_+
beer

Probieren Sie es online! Erläuterung:


99$*_

Fügt 99 _s ein.

_\B
Take one down and pass it around, $.'#.¶¶$.'#, $.'.¶

Ändert alle bis auf die letzte _Zeichenfolge in die Zeichenfolge Take 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.

^
99#, 99.¶

Fügt die erste Zeile des ersten Verses im "kompakten" Format hinzu.

_
Go to the store and buy some more, 99#.

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.

#
 on the wall

Ersetzt eine Zeichenfolge, die im Vers mehrmals vorkommt.

1\b|(\d+)
$& bottle$#1$*s of $&$*_

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 99diese Weise spare ich 1 Byte ein .)

\b(_{15})+\b
fizzbuzz
\b(_{5})+\b
buzz
\b(___)+\b
fizz
_+
beer

Ersetzen Sie die genauen Vielfachen durch das entsprechende Getränk.

Neil
quelle
2

sed , 468 459 456 Bytes

s:^:99 bottles of fizz on the wall, 99 bottles of fizz.:
p
s:99:I8:g
s:fizz:XYYZ:g
x
s:^:Take one down and pass it around, I8 bottles of XYYZ on the wall.\n:
G
x
:
g
s:XXX:fizz:g
s:Y{5}:buzz:g
s:\bX*Y*Z:beer:g
s:[XYZ]::g
y:ABCDEFGHI:123456789:
s:\b0::g
/ 1 /bq
p
x
s:^::
tc
:c
s:(\S)0:\1@:g
Td
y:ABCDEFGHI:0ABCDEFGH:
:d
y:123456789@:0123456789:
s:(XXX)*(Y{5})*(Y*Z):XY\3:g
x
b
:q
s:es:e:g
aGo to the store and buy some more, 99 bottles of fizz on the wall.

Probieren Sie es online!

Benötigt -rFlagge.

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 als X*Y*Z, wobei Xder Überblick über -N mod 3und Ybehalten werden -N mod 5.

Bei jeder nachfolgenden Iteration werden die Zahlen dekrementiert und die Werte für Xs und Ys aktualisiert. Dann wird Hold Space in den Pattern Space kopiert, in Zeilen des Songs umgewandelt und gedruckt.

eush77
quelle
2

C 349 345 344 Bytes

#define b(x)x^1?" bottles":" bottle"
#define g i-1?"Take one down and pass it around":"Go to the store and buy some more"
*w=" on the wall";*s(x){return x?x%15?x%5?x%3?"beer":"fizz":"buzz":"fizzbuzz":"fizz";}i=100;main(){while(--i){printf("%d%s of %s%s, %d%s of %s.\n%s, %d%s of %s%s.\n",i,b(i),s(i),w,i,b(i),s(i),g,i-1?i-1:99,b(i-1),s(i-1),w);}}

Na siehst du. Das hat eine Stunde gedauert.

Probieren Sie es online!

MD XF
quelle
2

Javascript (ES6), 236 234 233 232 Bytes

for(i=99;i;console.log(z()+`, ${z(_)}.
${--i?'Take one down and pass it around':'Go to the store and buy some more'}, ${z()}.

`))z=(o=' on the wall',j=i||99)=>j+` bottle${j>1?'s':_} of `+((j%3?_:'fizz')+(j%5?_='':'buzz')||'beer')+o

Demo

// replace console.log to avoid 50-log limit in snippets:
console.log=_=>document.write(`<pre>${_}</pre>`)

for(i=99;i;console.log(z()+`, ${z(_)}.
${--i?'Take one down and pass it around':'Go to the store and buy some more'}, ${z()}.

`))z=(o=' on the wall',j=i||99)=>j+` bottle${j>1?'s':_} of `+((j%3?_:'fizz')+(j%5?_='':'buzz')||'beer')+o

Ungolfed

i = 99  // start counter at 99

z = (   // define function z which takes arguments with defaults:
   o = ' on the wall', // o = defaults to ' on the wall'
   j = i || 99         // j = defaults to value of counter i - or 99 when i == 0
) => 
    j +                 // our current j counter
    ' bottle' +
    (j > 1 ? 's' : _) + // choose 's' when we have more than 1 bottle, or blank _
    (
        (j % 3 ? _ : 'fizz') +      // if j % 3 is 0, add 'fizz', otherwise blank _
        (j % 5 ? _ = '' : 'buzz')   // if j % 5 is 0, add 'buzz', otherwise blank _
                                    // _ gets defined here since it's the first place it's used
            ||                      // if no fizz or buzz, result is a falsey empty string
        'beer'                      // replace falsey value with 'beer'
    ) +
    o                               // append o

while (i) {         // while counter is non-zero
    console.log(    // output string:
        z() +       // call z without o argument
        ', ' +
        z(_) +      // call z with blank _ for o to block ' on the wall' here
        '.\n' +
        ( --i       // decrement i, if still non-zero:
            ? 'Take one down and pass it around'
                    // otherwise:
            : 'Go to the store and buy some more'
        ) + 
        ', ' +
        z() +       // another call to z without o
        '.\n\n'
    )
}
nderscore
quelle
1

Ruby , 261 Bytes

99.downto(1){|i|w=' on the wall'
f=->x{a='';x%3<1&&a+='fizz';x%5<1&&a+='buzz';a<?a&&a='beer';"%d bottle%s of %s"%[x,x<2?'':?s,a]}
puts [f[i]+w,f[i]+?.+$/+(i<2?'Take one down and pass it around':'Go to the store and buy some more'),f[i<2?99:i-1]+w+?.+$/*2]*', '}

Probieren Sie es online!

Alex
quelle
1

shortC , 314 312 Bytes

Db(x)x^1?" bottles":" bottle"
Dg i-1?"Take one down and pass it around":"Go to the store and buy some more"
*w=" on the wall";*s(x){Tx?x%15?x%5?x%3?"beer":"fizz":"buzz":"fizzbuzz":"fizz";}i=100;AW--i){R"%d%s of %s%s, %d%s of %s.\n%s, %d%s of %s%s.\n",i,b(i),s(i),w,i,b(i),s(i),g,i-1?i-1:99,b(i-1),s(i-1),w

Entschuldigung, es gibt keine Erklärung, aber ich habe völlig vergessen, wie das funktioniert.

MD XF
quelle
Sie sollten in Betracht ziehen, eine weitere Antwort in Kurzform C hinzuzufügen, die der Logik dieser Antwort folgt , um zu sehen, wie sie funktioniert. Außerdem sieht es so aus, als ob Sie in beiden Antworten Ihr Makro nur einmal für g verwenden. Sie sollten in der Lage sein, es
einzufügen
Können Sie die erweiterte Version posten?
CalculatorFeline
@CalculatorFeline Der entsprechende C-Code ist bereits hier , wenn Sie danach fragen
musicman523
1

Kohle , 307 297 Bytes

A”|‽2?{:×G↗”¦αA“6«eMηOU¶¿”¦ζA“9“e▷·gqε-g}”¦βA“9B{⦃⁺Bφ=;λO”¦ωAfizz¦φAbuzz¦γAbeer¦ηA”↶C▶▶d℅d¬r·US\λTθNevT◧→GM⁸ω┦τA“M↧k↓⁺*f÷,ψZ¢▶\¿|P“№κ×υpξXoW”¦σA.¶πF⮌…¹¦¹⁰⁰«A⎇⁻ι¹αζθ¿∧¬﹪鳬﹪ι⁵A⁺φγ﹪ι³Aφ﹪ι⁵AγεAηε⁺⁺⁺⁺⁺⁺⁺IιθεβIιθεπ¿⁻ι¹A⁻ι¹λA⁹⁹λA⎇⁻λ¹αζθ¿∧¬﹪볬﹪λ⁵A⁺φγ﹪λ³Aφ﹪λ⁵AγεAηε¿⁻ι¹AτδAσδ⁺⁺⁺⁺δλθεω

Probieren Sie es online!

JA WIR KÖNNEN! Link zur ausführlichen Version, hier kann man sicher viel Golf spielen.

Charlie
quelle
Leider haben Sie vergessen, tatsächlich auf die ausführliche Version zu verlinken, aber dieser Lauf von s sieht verdächtig aus ...
Neil
1

tcl, 298

proc B i {set x " bottle[expr $i>1?"s":""] of [expr $i%3?$i%5?"beer":"":"fizz"][expr $i%5?"":"buzz"]"}
set i 99
time {puts "$i[B $i][set w " on the wall"], $i[B $i].
Take one down and pass it around, [incr i -1][B $i]$w."} 98
puts "1[B $i]$w, 1[B $i].
Go to the store and buy some more, 99[B 9]$w."

Demo

Sergiol
quelle