“99 şişe fizz”


55

Meydan okuma

Sözlerin çıktısını 99 Şişe Bira'ya çıkaran bir program yazın, ancak "bira" yerine, duvardaki şişe sayısı 3'ün katıysa "fizz" çıktısını alın. "fizzbuzz", 3'ün katı ve 5'in katı olması durumunda. Eğer duvardaki şişe sayısı 3 ya da 5 katı değilse, her zamanki gibi "bira" çıkın.

Şarkı sözleri

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.


Bu , yani her dilden en kısa yolla kazanıyor.


30
95 şişe fizz var. Bir tane alıyorum. Şimdi 94 şişe biram var. Mantık.
Okx,

2
Bir şişe gazoz alabilir miyim?
Stephen

1
3. şişeden sonra yeni bir hat mı olmalı?
Kritixi Lithos,

2
İki satır arasında yeni bir satır gerekli midir? Kritixi Lithos'un düzenlemesinden önce hiç yoktu ve şimdi de var.
dzaima

11
@Okx Eh, bira olduğunu ... gazlı ve size bir vızıltı verir
Draco18s

Yanıtlar:


12

Piton 2 , 263 253 245 bayt

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]

Çevrimiçi deneyin!


Bu harika! Dizelerin enterpolasyonunun neden en kısa seçenek olduğunu açıklayabilir misiniz?
musicman523

2
Örneğin , sadece bazı baytları kurtarmak ['ab','cd'][x]için yeniden yazılabilir'acbd'[x::2]
Çubuk

7

C (GCC), 276 274 bayt

İki baytı kurtardığı için Neil'e teşekkürler !

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

Makro açılımlarında eşsiz parantezleri kim sevmez?

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

Coliru'da canlı görün!

Alternatif sürüm (276 bytes)

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

Bu süper havalı! Her zaman C cevaplarının string manipülasyonuyla ne kadar iyi olabileceği konusunda şok oluyorum.
musicman523

Değiştirerek birkaç byte kaydetme #define w" on the wall"için *w=" on the wall".
MD XF,

@ MDXF mmh, aynı byte sayısını alıyorum. Bir şey mi eksik?
Quentin

Sanırım orada baytları kurtarmak için #define wonunla değiştirebileceğini kastettiler *w=. Dürüst olmak gerekirse ben golf C ile aşina değilim, ama benim tahminim wdolaylı olarak tanımlanmış bir küresel karakter yapar *.
musicman523,

4
@ musicman523, #defined' wnin otomatik olarak bitişik string değişmezleri ile yapıştırılan bir string değişmezi olduğu yönündedir. Eğer wbir değişkendir, içimde gerçek dize biçimlendirme kullanmak zorunda printf.
Quentin

6

Röda , 273 bayt

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

Çevrimiçi deneyin!

Sabahları daha fazla golf oynayacak.


6

PHP, 242 Bayt

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.

";

Çevrimiçi deneyin!

PHP, 244 Bayt

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

Çevrimiçi deneyin!

strtr işlevini kullanın

PHP, 245 Bayt

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

";

Çevrimiçi deneyin!

tamsayıya bağlı bir iz bırakmamak için dizede bir Anonim işlev kullanın.

Expanded

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

";

1
Eğer yanlış saymazsam 2 byte ( toplam 250 byte ) kaydedebilirsiniz 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 13:17

1
@insertusernamehere Birkaç değişiklikle yanlış sayıma sahipsiniz, 2 Bayt daha fazla tasarruf sağlıyor. Teşekkür ederim. Ve bana usebu sürümde 1 Byte kazandıran isimsiz fonksiyon ile birlikte kullanmam için küçük bir fikir
verdiniz

5

05AB1E , 151 146 143 bayt

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

Çevrimiçi deneyin!


4

SOGL , 136 135 134 133 131 bayt

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

Her şeyden önce, 3. işlev:

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

İlk işlev:

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

İkinci işlev:

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

Ve ana bölüm:

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"

OÖnünde ve sonrasına yeni bir satır koyan bir hata nedeniyle çift bayt kaybetti (Ve bu bir şekilde V0.9'a geri dönüyor (bu V0.11 kodudur))


4

Java, 344 340 339 bayt

(Fizzbuzz'da golf oynadıktan sonra -4 bayt; başıboş boşluk bırakmadan -1 bayt)

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

Hafifçe topraksız (yatay kaydırmayı ortadan kaldırmak için 1 boşluk girinti kullanarak):

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

4

JavaScript (ES6), 316 309 bayt

Bu bir işlev yerine tam bir programdır. Çok yaratıcı bir şey değil, sadece naif bir yaklaşım (dolayısıyla bayt sayısı!). Bunun console.log()yerine kullanıyorum alert()çünkü çoğu tarayıcıda görüntülenebilecek karakter sayısı sınırlaması var alert(). Tüm boşlukların ve yeni satırların gerekli olduğunu unutmayın.

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

İşte Metin Parçacığı:

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, bu cevabı ile bronz rozetini kazandım ! Bunu asla başaracağımı asla düşünmedim (bu büyük bir başarı olsa da değil.)!


Sizin dfonksiyonu herhangi ihtiyacı yoktur (), çünkü s ?:sağ ilişkisel, ancak gerçekte kullanarak daha bayt kaydedebilirsiniz d=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer".
Neil

3

Retina , 230 bayt


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

Çevrimiçi deneyin! Açıklama:


99$*_

99 _s ekler .

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

_Dizenin sonuncusu dışındaki her şeyi değiştirir; yeni satır Take one down and pass it around, $.'#.¶¶$.'#, $.'.¶nerede kalır ve kalan alt çizgi sayısıdır. Bu etkili bir şekilde 98'den 1'e geri saymaktadır.$.'

^
99#, 99.¶

İlk ayetin ilk satırını "kompakt" biçimde ekler.

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

Son ayetin ikinci satırını ekler. Neden _bilmiyorum kullanmak için çemberin içinden atlamam gerekiyor ama $iki kez eşleşiyor gibi görünüyor, bu yüzden bunu kullanamam. Git figürü.

#
 on the wall

Ayette birkaç kez görünen bir dize yerine geçer.

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

Bu, ayetlerdeki tamsayılarla eşleşir ve uygun şişeyi / şişeleri sonlandırır ve içeceğin seçimine hazırlanırken tekrar eski haline döner. ( 99Bu şekilde s'de 1 bayt biriktiriyorum .)

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

Tam katları uygun içecekle değiştirin.


2

sed , 468 459 456 bayt

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.

Çevrimiçi deneyin!

-rBayrak gerektirir .

açıklama

Tutma alanı olarak temsil numaraları ile iki tekrar çizgilerin desen tutar [A-I][0-9](onlarca ve kendisi için ayrı basamak) ve olarak temsil içeceğin tür X*Y*Z, Xizler -N mod 3, ve Yarasında -N mod 5.

Sonraki her yinelemede, sayılar azalır ve Xs ve Ys güncellenir. Daha sonra tutma alanı, kalıp alanına kopyalanır, şarkının satırlarına dönüştürülür ve yazdırılır.


2

C, 349 345 344 bayt

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

İyi gidiyorsun. Bu bir saat sürdü.

Çevrimiçi deneyin!


2

Javascript (ES6), 236 234 233 232 bayt

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

gösteri

// 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'
    )
}

1

Ruby , 261 bayt

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

Çevrimiçi deneyin!


1

shortC , 314 312 bayt

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

Üzgünüm bir açıklama yok, ama bunun nasıl çalıştığını tamamen unuttum.


Nasıl cevap verdiğini görmek için bu cevabın mantığını izleyen kısaca başka bir cevap eklemeyi düşünmelisiniz . Ayrıca, her iki cevabınızda da yalnızca bir kez g makronuzu kullandığınız gibi görünüyor, satır içi ve birkaç bayttan tasarruf edebiliyor olmalısınız
musicman523

Genişletilmiş sürümü gönderebilir misiniz?
Hesap MakinesiFeline

@CalculatorFeline Eşdeğer C kodu zaten burada , eğer istediğin buysa
musicman523

1

Kömür , 307 297 bayt

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

Çevrimiçi deneyin!

EVET YAPABİLİRİZ! Ayrıntılı sürümüne bağlantı, bu çok golf oynayabilir, eminim.


Ne yazık ki aslında ayrıntılı versiyona bağlantı vermeyi unuttun, ancak bu dizi şüpheli görünüyor ...
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."

gösteri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.