"피즈 99 병"


55

도전

맥주 99 병에 가사를 출력하는 프로그램을 작성, 하지만 "맥주"대신 벽의 병 수가 3의 배수이면 "fizz", 5의 배수이면 "버즈"를 출력하십시오. 3의 배수와 5의 배수 인 경우 "fizzbuzz"벽에있는 병의 수가 3이나 5의 배수가 아닌 경우 평소대로 "맥주"를 출력하십시오.

가사

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.


이것은 이므로 각 언어에서 가장 짧은 제출이 이깁니다.


30
피즈 95 병이 있습니다. 하나 가져가 이제 94 병의 맥주가 있습니다. 논리.
Okx

2
피츠 비어 병을 가질 수 있습니까?
Stephen

1
세 번째 병 다음에 줄 바꿈이 있어야합니까?
Kritixi Lithos

2
두 줄 사이에 줄 바꿈이 필요합니까? Kritixi Lithos의 편집 이전에는 아무것도 없었으며 현재는 없습니다.
dzaima

11
@Okx 글쎄, 맥주 탄산이며 당신에게 버즈를 제공합니다 ...
Draco18s

답변:


12

파이썬 2 , 263 253 245 바이트

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]

온라인으로 사용해보십시오!


대단해! 문자열 보간이 가장 짧은 옵션 인 이유를 설명 할 수 있습니까?
musicman523

2
예를 들어 바이트를 절약하기 위해 ['ab','cd'][x]로 다시 작성할 수 있습니다'acbd'[x::2]
Rod

7

C (GCC), 276274 바이트

2 바이트를 절약 한 Neil 에게 감사드립니다 !

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

매크로 확장에서 비교할 수없는 괄호를 누가 좋아하지 않습니까?

언 골프 드 :

#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에서 생방송으로 확인하십시오!

대체 버전 (276 바이트)

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

이거 정말 멋지다! 문자열 조작으로 C 응답이 얼마나 좋은지 항상 충격을 받았습니다.
musicman523

로 변경 #define w" on the wall"하여 몇 바이트를 저장하십시오 *w=" on the wall".
MD XF

@ MDXF mmh, 정확히 동일한 바이트 수를 얻습니다. 뭔가 빠졌습니까?
Quentin

나는 그들이 당신이 대체 할 수있는 의미 생각 #define w으로 *w=이 바이트를 저장합니다. 솔직히 나는 골프 C에 익숙하지는 않지만 w암시 적으로 정의 된 글로벌 문자를 만드는 것 같습니다 .
musicman523

4
@ musicman523 문제는 #defined w가 문자열 리터럴이며 인접한 문자열 리터럴로 자동으로 붙여 넣습니다. 경우 w변수, 난 내 실제 문자열 서식을 사용해야합니다 printf.
Quentin

6

로다 , 273 바이트

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

온라인으로 사용해보십시오!

아침에 더 골프를 칠 것입니다.


6

PHP, 242 바이트

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.

";

온라인으로 사용해보십시오!

PHP, 244 바이트

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

온라인으로 사용해보십시오!

함수 strtr 사용

PHP, 245 바이트

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

";

온라인으로 사용해보십시오!

문자열에 익명 함수 를 사용 하여 정수에 따라 sustring을 얻습니다.

넓히는

$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
내가 잘못 계산하지 않으면 2 바이트 ( 총 250 바이트) 를 절약 할 수 있습니다 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
@insertusername 여기 약간의 변경으로 잘못 계산되어 2 바이트를 더 절약합니다. 감사합니다. 그리고 당신은 나에게 사용할 수있는 작은 아이디어 제공이 use이 버전에서 1 바이트를 저장하는 익명 함수와 함께
요 르그 Hülsermann

5

05AB1E , 151 (146) 143 바이트

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

온라인으로 사용해보십시오!


4

SOGL , 136 135 134 133 131 바이트

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

우선, 세 번째 기능 :

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

첫 번째 기능 :

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

두 번째 기능 :

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

그리고 주요 부분 :

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줄 바꿈 전후에 개행 을 넣는 버그로 인해 몇 바이트를 잃었 습니다 (어쨌든 이것은 V0.9로 돌아갑니다 (이것은 V0.11 코드입니다))


4

자바, 344 340 339 바이트

(골프 피즈 버즈 후 4 바이트; 부유 공백 제거 -1 바이트)

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

약간 골퍼되지 않음 (1 칸 들여 쓰기를 사용하여 가로 스크롤 제거) :

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

자바 스크립트 (ES6), (316) 309 바이트

이것은 기능이 아닌 완전한 프로그램입니다. 매우 독창적 인 것은 아니며 순진한 접근 방식이므로 바이트 수입니다. 많은 브라우저가를 사용하여 표시 할 수있는 문자 수를 제한하기 때문에 console.log()대신에 사용 alert()하고 있습니다 alert(). 모든 공백과 줄 바꿈이 필요합니다.

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)

언 골프 :

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

스 니펫은 다음과 같습니다.

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,이 답변으로 에서 브론즈 배지를 받았습니다 ! 내가 이걸 달성 할 줄은 몰랐다. (그렇지만 큰 성과는 아니다.)!


귀하의 d기능은 필요하지 않습니다 ()때문에 S를 ?:마우스 오른쪽 연관이지만, 실제로 사용하는 더 많은 바이트를 저장할 수 있습니다 d=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer".
Neil

3

레티 나 , 230 바이트


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

온라인으로 사용해보십시오! 설명:


99$*_

99 _초를 삽입합니다 .

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

마지막 _을 제외한 모든 것을 문자열로 변경 합니다 Take one down and pass it around, $.'#.¶¶$.'#, $.'.¶. 여기서 줄 바꿈이며 $.'나머지 밑줄의 수입니다. 이것은 효과적으로 98에서 1로 계산됩니다.

^
99#, 99.¶

첫 번째 구절의 첫 줄을 "압축"형식으로 추가합니다.

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

마지막 구절의 두 번째 줄을 추가합니다. _내가 모르는 것을 사용하기 위해 농구 대를 뛰어야하는 이유 는 있지만 $두 번 일치하는 것처럼 보이 므로 사용할 수 없습니다. 그림을 이동.

#
 on the wall

구절에서 여러 번 나타나는 문자열을 대체합니다.

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

이것은 구절의 정수와 일치하고 음료를 선택하기 위해 적절한 병에 접미사를 붙이고 단항으로 다시 확장합니다. ( 99이 방법으로 s 에 1 바이트를 저장 합니다.)

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

정확한 배수를 적절한 음료수로 교체하십시오.


2

sed , 468 459 456 바이트

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.

온라인으로 사용해보십시오!

-r플래그가 필요합니다 .

설명

홀드 공간으로 표시 번호 두 개의 반복 라인의 패턴, 보유 [A-I][0-9](수십 사람을위한 별도의 자리)와로 표현 음료의 종류 X*Y*Z, X를 추적 -N mod 3하고, Y의를 -N mod 5.

이후의 각 반복에서 숫자가 감소하고 Xs 및 Ys가 업데이트됩니다. 그런 다음 보류 공간이 패턴 공간으로 복사되어 노래 줄로 바뀌어 인쇄됩니다.


2

C, 349 (345) 344 바이트

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

글쎄, 당신은 간다. 한 시간이 걸렸습니다.

온라인으로 사용해보십시오!


2

자바 (ES6) 236 234 233 232 바이트

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

데모

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

언 골프

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

루비 , 261 바이트

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

온라인으로 사용해보십시오!


1

shortC , (314) 312 바이트

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

설명이 없지만 죄송합니다. 어떻게 작동하는지 완전히 잊었습니다.


골프가 어떻게 진행되는지 보려면 답변 의 논리를 따르는 shortC로 다른 답변을 추가 하는 것이 좋습니다. 또한, 두 대답에서 모두 g에 대해 매크로를 한 번만 사용하는 것처럼 보입니다. 인라인으로 몇 바이트를 저장할 수 있어야합니다.
musicman523

확장 버전을 게시 할 수 있습니까?
CalculatorFeline

@CalculatorFeline 동등한 C 코드가 이미 여기 있습니다 . 그것이 당신이 요구하는
것이라면

1

, 307 297 바이트

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

온라인으로 사용해보십시오!

그래 우리는 할 수있어! 장황한 버전에 연결하십시오, 이것은 많이 골프 질 수 있습니다, 확실합니다.


슬프게도 당신은 실제로 자세한 버전으로 연결하는 것을 잊었지만, 그 실행 은 의심스러워 보입니다 ...
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."

데모

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.