"99 botol soda"

55

Tantangan

Tulis program yang menghasilkan lirik hingga 99 Bottles of Beer, tetapi alih-alih "beer", output "fizz" jika jumlah botol di dinding adalah kelipatan 3, "buzz" jika kelipatan 5, dan "fizzbuzz" jika kelipatan 3 dan kelipatan 5. Jika jumlah botol di dinding bukan kelipatan 3 atau 5, cukup keluaran "bir" seperti biasa.

Lirik

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.


Ini adalah , jadi pengiriman terpendek di setiap bahasa akan menang.

musicman523
sumber
30
Saya punya 95 botol soda. Saya mengambil satu. Sekarang saya punya 94 botol bir. Logika.
Okx
2
Bisakah saya punya sebotol fizzbeer?
Stephen
1
Apakah seharusnya ada baris baru setelah botol ke-3?
Kritixi Lithos
2
Apakah baris baru diperlukan di antara kedua garis? Sebelum edit Kritixi Lithos tidak ada dan sekarang ada.
dzaima
11
@Okx Nah, bir adalah soda dan memberi Anda buzz ...
Draco18s

Jawaban:

12

Python 2 , 263 253 245 byte

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]

Cobalah online!

tongkat
sumber
Ini luar biasa! Bisakah Anda menjelaskan mengapa interpolasi string adalah opsi terpendek?
musicman523
2
Misalnya ['ab','cd'][x]dapat ditulis ulang sebagai 'acbd'[x::2], hanya untuk menghemat beberapa byte
Rod
7

C (GCC), 276 274 byte

Terima kasih kepada Neil untuk menghemat dua byte!

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

Siapa yang tidak suka tanda kurung dalam ekspansi makro?

Tidak Disatukan:

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

Lihat langsung di Coliru!

Versi alternatif (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
sumber
Ini sangat keren! Saya selalu terkejut melihat betapa bagusnya jawaban C dengan manipulasi string.
musicman523
Simpan beberapa byte dengan mengubah #define w" on the wall"ke *w=" on the wall".
MD XF
@ MDXF mmh, saya mendapatkan jumlah byte yang sama persis. Apakah saya melewatkan sesuatu?
Quentin
Saya pikir mereka berarti Anda dapat mengganti #define wdengan *w=untuk menyimpan byte di sana. Jujur saya tidak terlalu terbiasa dengan golf C, tapi dugaan saya adalah ia membuat wkarakter global * yang didefinisikan secara implisit.
musicman523
4
@ musicman523 masalahnya adalah bahwa #defined wadalah string literal, yang secara otomatis ditempel dengan string literal yang berdekatan. Jika wvariabel, saya harus menggunakan format string yang sebenarnya di dalam printf.
Quentin
6

Röda , 273 byte

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

Cobalah online!

Akan bermain golf lebih jauh di pagi hari.

Kritixi Lithos
sumber
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.

";

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

Cobalah online!

gunakan fungsi 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.

";

Cobalah online!

menggunakan fungsi Anonim dalam string untuk mendapatkan penopang tergantung dari integer

Diperluas

$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
sumber
1
Jika saya tidak salah hitung Anda dapat menyimpan 2 bytes ( 250 bytes total): 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.↵↵";}. :)
masukkan nama pengguna
1
@insertusernamedi sini Anda memiliki salah hitung dengan beberapa perubahan menghemat lebih dari 2 Bytes. Terima kasih. Dan Anda telah memberi saya sedikit ide untuk digunakan usedalam kombinasi dengan fungsi anonim yang menghemat 1 Byte dalam versi ini
Jörg Hülsermann
5

05AB1E , 151 146 143 byte

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

Cobalah online!

Emigna
sumber
4

SOGL , 136 135 134 133 131 byte

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

Pertama-tama, fungsi ke-3:

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

Fungsi pertama:

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

Fungsi kedua:

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

Dan bagian utama:

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"

Kehilangan beberapa byte karena bug yang Omenempatkan baris baru sebelum dan sesudahnya (Dan entah bagaimana ini kembali ke V0.9 (ini adalah kode V0.11))

dzaima
sumber
4

Java, 344 340 339 byte

(-4 byte setelah bermain golf fizzbuzz; -1 byte menghapus spasi kosong)

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

Sedikit tidak diubah (menggunakan lekukan 1-ruang untuk menghilangkan pengguliran horizontal):

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
sumber
4

JavaScript (ES6), 316 309 byte

Ini adalah program lengkap daripada fungsi. Tidak ada yang sangat kreatif, itu hanya pendekatan naif (maka bytecount!). Saya menggunakan console.log()bukan alert()karena banyak browser memiliki batasan pada jumlah karakter yang dapat ditampilkan menggunakan alert(). Perhatikan bahwa semua spasi putih dan baris baru diperlukan.

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)

Tidak Disatukan:

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

Ini Cuplikannya:

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, dengan jawaban ini, saya telah mendapatkan lencana perunggu dalam ! Tidak pernah terpikir saya akan mencapai ini selamanya (bukan berarti itu pencapaian besar.)!

Arjun
sumber
Anda dfungsi tidak memerlukan ()s karena ?:benar-asosiatif, tetapi Anda benar-benar dapat menyimpan lebih banyak byte menggunakan d=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer".
Neil
3

Retina , 230 byte


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

Cobalah online! Penjelasan:


99$*_

Sisipan 99 _s.

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

Mengubah semua kecuali yang terakhir _ke string Take one down and pass it around, $.'#.¶¶$.'#, $.'.¶, di mana adalah baris baru dan $.'merupakan hitungan dari garis bawah yang tersisa. Ini secara efektif menghitung mundur dari 98 menjadi 1.

^
99#, 99.¶

Menambahkan baris pertama dari ayat pertama dalam format "kompak".

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

Menambahkan baris kedua dari ayat terakhir. Mengapa saya perlu melompat melalui lingkaran untuk menggunakan _Saya tidak tahu, tetapi $tampaknya cocok dua kali, jadi saya tidak bisa menggunakannya. Sosok pergi.

#
 on the wall

Mengganti string yang muncul beberapa kali dalam ayat tersebut.

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

Ini cocok dengan bilangan bulat dalam ayat-ayat, dan sufiks botol yang sesuai dari, dan mengembang kembali ke unary lagi, dalam persiapan untuk memilih minuman. (Saya menyimpan 1 byte pada 99s dengan cara ini.)

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

Ganti kelipatan tepat dengan minuman yang sesuai.

Neil
sumber
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.

Cobalah online!

Membutuhkan -rbendera.

Penjelasan

Hold space memegang pola dua garis berulang, dengan angka diwakili [A-I][0-9](digit terpisah untuk puluhan dan satu) dan jenis minuman diwakili sebagai X*Y*Z, di mana Xmelacak -N mod 3, dan Ydari -N mod 5.

Pada setiap iterasi berikutnya, angkanya akan dikurangi dan angka Xs dan Ys diperbarui. Kemudian ruang pegang disalin ke ruang pola, diubah menjadi garis-garis lagu, dan dicetak.

eush77
sumber
2

C, 349 345 344 byte

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

Nah, begitulah. Butuh satu jam.

Cobalah online!

MD XF
sumber
2

Javascript (ES6), 236 234 233 232 byte

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

Tidak disatukan

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
sumber
1

Ruby , 261 byte

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

Cobalah online!

Alex
sumber
1

shortC , 314 312 byte

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

Maaf tidak ada penjelasan, tapi saya benar-benar lupa cara kerjanya.

MD XF
sumber
Anda harus mempertimbangkan untuk menambahkan jawaban lain dalam shortC yang mengikuti logika dari jawaban ini , untuk melihat bagaimana golf. Selain itu, sepertinya di kedua jawaban Anda, Anda hanya menggunakan makro untuk g satu kali, Anda harus dapat menyejajarkannya dan menyimpan beberapa byte
musicman523
Bisakah Anda memposting versi yang diperluas?
CalculatorFeline
@CalculatorFeline Kode C yang setara sudah ada di sini , jika itu yang Anda minta
musicman523
1

Arang , 307 297 byte

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

Cobalah online!

YA KITA BISA! Tautan ke versi verbose, ini bisa banyak bermain golf, saya yakin.

Charlie
sumber
Sayangnya Anda lupa untuk benar-benar menautkan ke versi verbose, tetapi proses s terlihat mencurigakan ...
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
sumber