„99 butelek musu”

55

Wyzwanie

Napisz program, który wyśle ​​tekst do 99 butelek piwa, ale zamiast „piwa” wyślij „fizz”, jeśli liczba butelek na ścianie jest wielokrotnością 3, „brzęczenie”, jeśli jest wielokrotnością 5, i „fizzbuzz”, jeśli jest to wielokrotność 3 i wielokrotność 5. Jeśli liczba butelek na ścianie nie jest wielokrotnością 3 lub 5, po prostu wyślij „piwo” jak zwykle.

tekst piosenki

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.


To jest , więc wygrywa najkrótsza wersja w każdym języku.

musicman523
źródło
30
Mam 95 butelek musu. Zabieram jeden. Teraz mam 94 butelki piwa. Logika.
Okx,
2
Czy mogę dostać butelkę piwa musującego?
Stephen
1
Czy po trzeciej butelce ma być nowa linia?
Kritixi Lithos
2
Czy wymagana jest nowa linia między dwiema liniami? Przed edycją Kritixi Lithos nie było żadnej, a teraz są.
dzaima
11
@Okx Cóż, piwo jest gazowane i
buzuje

Odpowiedzi:

12

Python 2 , 263 253 245 bajtów

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]

Wypróbuj online!

Pręt
źródło
To jest niesamowite! Czy możesz wyjaśnić, dlaczego interpolacja ciągów jest najkrótszą opcją?
musicman523
2
Na przykład ['ab','cd'][x]można przepisać jako 'acbd'[x::2], aby zaoszczędzić trochę bajtów
Rod
7

C (GCC), 276 274 bajtów

Dzięki Neil za uratowanie dwóch bajtów!

#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, ");}

Kto nie lubi niedopasowanych nawiasów w rozwinięciach makr?

Nie golfowany:

#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");
    }
}

Zobacz na żywo na Coliru!

Alternatywna wersja (276 bajtów)

#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
źródło
To jest super fajne! Zawsze jestem zszokowany, jak dobre mogą być odpowiedzi C przy manipulowaniu ciągami.
musicman523
Zaoszczędź kilka bajtów, zmieniając #define w" on the wall"na *w=" on the wall".
MD XF
@ MDXF mmh, otrzymuję dokładnie taką samą liczbę bajtów. Czy coś brakuje?
Quentin
Myślę, że oznaczało można zastąpić #define wz *w=uratować bajtów tam. Szczerze mówiąc, nie jestem zbyt obeznany z golfem C, ale domyślam się, że tworzy won domyślnie zdefiniowany globalny char *.
musicman523
4
@ musicman523 problem polega na tym, że #defined wjest literałem łańcuchowym, który jest automatycznie wklejany z sąsiednimi literałami łańcuchowymi. Jeśli wjest zmienną, muszę użyć faktycznego formatowania łańcucha w środku printf.
Quentin
6

Röda , 273 bajtów

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.`]}

Wypróbuj online!

Będzie grał w golfa rano.

Kritixi Lithos
źródło
6

PHP, 242 bajtów

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.

";

Wypróbuj online!

PHP, 244 bajtów

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]);

Wypróbuj online!

użyj funkcji strtr

PHP, 245 bajtów

$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.

";

Wypróbuj online!

użyj funkcji Anonimowy w ciągu, aby uzyskać zależność od liczby całkowitej

Rozszerzony

$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
źródło
1
Gdybym nie miscount można zapisać 2 bajtów ( 250 bajtów w sumie): 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.↵↵";}. :)
inserttusernamehere
1
@insertusernamehere Miscount z kilkoma zmianami oszczędza 2 Bajty więcej. Dziękuję Ci. Dałeś mi mały pomysł na użycie usew połączeniu z anonimową funkcją, która oszczędza 1 bajt w tej wersji
Jörg Hülsermann
5

05AB1E , 151 146 143 bajtów

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

Wypróbuj online!

Emigna
źródło
4

SOGL , 136 135 134 133 131 131 bajtów

Ƨ, 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

Przede wszystkim trzecia funkcja:

                                    ▓  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]

Pierwsza funkcja:

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

Druga funkcja:

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

I główna część:

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"

Straciłem kilka bajtów z powodu błędu, który Oumieszcza nowy wiersz przed i po nim (I jakoś to wraca do V0.9 (to jest kod V0.11))

dzaima
źródło
4

Java, 344 340 339 bajtów

(-4 bajty po grze w golfa fizzbuzz; -1 bajtowe usuwanie zbłąkanych białych znaków)

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");}}

Nieznacznie pozbawiony golfa (użycie wcięcia 1 spacji, aby wyeliminować przewijanie w poziomie):

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
źródło
4

JavaScript (ES6), 316 309 bajtów

Jest to pełny program, a nie funkcja. Nic bardzo kreatywnego, to tylko naiwne podejście (stąd bajt!). Używam console.log()zamiast, alert()ponieważ wiele przeglądarek ma ograniczenie liczby znaków, które można wyświetlić za pomocą alert(). Pamiętaj, że wszystkie białe znaki i znaki nowej linii są konieczne.

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)

Nie golfowany:

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);

Oto 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)

BTW, dzięki tej odpowiedzi zdobyłem brązową odznakę w ! Nigdy nie myślałem, że kiedykolwiek to osiągnę (choć nie jest to duże osiągnięcie).

Arjun
źródło
Twoja dfunkcja nie potrzebuje żadnych ()znaków, ponieważ ?:jest skojarzona z prawą stroną, ale możesz zaoszczędzić jeszcze więcej bajtów d=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer".
Neil
3

Siatkówka , 230 bajtów


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

Wypróbuj online! Wyjaśnienie:


99$*_

Wstawia 99 _s.

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

Zmienia wszystkie oprócz ostatniego _na ciąg Take one down and pass it around, $.'#.¶¶$.'#, $.'.¶, gdzie jest nowa linia i $.'liczba pozostałych znaków podkreślenia. To skutecznie odlicza od 98 do 1.

^
99#, 99.¶

Dodaje pierwszy wiersz pierwszego wiersza w formacie „kompaktowym”.

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

Dodaje drugi wiersz ostatniego wersetu. Dlaczego potrzebuję przeskakiwać przez obręcze, żeby użyć _nie wiem, ale $wydaje się, że pasują dwa razy, więc nie mogę tego użyć. Domyśl.

#
 on the wall

Zastępuje ciąg, który pojawia się kilka razy w wersecie.

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

To dopasowuje liczby całkowite w wersetach i sufikuje odpowiednią butelkę (butelkę), i ponownie rozwija się do jedności, przygotowując się do wyboru napoju. (W 99ten sposób zapisuję 1 bajt na s.)

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

Zastąp dokładne wielokrotności odpowiednim napojem.

Neil
źródło
2

sed , 468 459 456 bajtów

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.

Wypróbuj online!

Wymaga -rflagi.

Wyjaśnienie

Przestrzeń chwyt posiada wzór powtarzających dwóch liniach, z numerami reprezentowane [A-I][0-9](osobne cyfry dla dziesiątek i jedynek) i rodzaj napoju reprezentowane X*Y*Z, gdzie Xśledzi -N mod 3, i Yod -N mod 5.

Przy każdej kolejnej iteracji liczby są zmniejszane, a Xs i Ys aktualizowane. Następnie przestrzeń wstrzymania zostaje skopiowana do przestrzeni wzoru, zamieniona w linie utworu i wydrukowana.

eush77
źródło
2

C, 349 345 344 bajtów

#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);}}

Cóż, proszę bardzo. Zajęło to godzinę.

Wypróbuj online!

MD XF
źródło
2

JavaScript (ES6), 236 234 233 232 bajty

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

Próbny

// 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

Nie golfił

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
źródło
1

Rubinowy , 261 bajtów

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]*', '}

Wypróbuj online!

Alex
źródło
1

shortC , 314 312 bajtów

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

Niestety nie ma wyjaśnienia, ale zupełnie zapomniałem, jak to działa.

MD XF
źródło
Powinieneś rozważyć dodanie kolejnej odpowiedzi w skrócie, która jest zgodna z logiką tej odpowiedzi, aby zobaczyć, jak to gra w golfa. Wygląda też na to, że w obu odpowiedziach używasz makra tylko raz, g powinno być możliwe wstawienie go i zapisanie kilku bajtów
musicman523
Czy możesz opublikować rozszerzoną wersję?
CalculatorFeline,
@CalculatorFeline Odpowiednik kodu C już tu jest , jeśli o to prosisz
musicman523
1

Węgiel drzewny , 307 297 bajtów

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σδ⁺⁺⁺⁺δλθεω

Wypróbuj online!

TAK MOŻEMY! Link do pełnej wersji, jestem pewien, że można w nią grać w golfa.

Charlie
źródło
Niestety zapomniałeś link do pełnej wersji, ale ta seria wygląda podejrzanie ...
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."

próbny

sergiol
źródło