"99 병의 맥주"


71

가능한 한 적은 바이트로 99 Bottles of Beer에 가사를 출력하는 프로그램을 작성 하십시오 .

가사:

99 bottles of beer on the wall, 99 bottles of beer.
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 beer on the wall.

96 bottles of beer on the wall, 96 bottles of beer.
Take one down and pass it around, 95 bottles of beer on the wall.

95 bottles of beer on the wall, 95 bottles of beer.
Take one down and pass it around, 94 bottles of beer on the wall.

....

3 bottles of beer on the wall, 3 bottles of beer.
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 beer on the wall.

규칙 :

  • 프로그램은 STDOUT 또는 허용 가능한 대안에 로그하거나 함수에서 리턴해야합니다 (후행 줄 바꿈이 있거나없는).
  • 프로그램은 실행 가능한 전체 프로그램 또는 기능이어야합니다.
  • 이 도전에 대한 0 바이트 답변을 제출하기 위해 특별히 작성된 언어는 특별히 흥미롭지는 않습니다.

    제출물을 테스트하려면 통역사가 있어야합니다. 이전에 구현되지 않은 언어에 대해이 통역사를 직접 작성할 수 있습니다.

  • 이것은 HQ9 + 또는 99의 출력과 다릅니다.이 언어로 작성된 답은 삭제됩니다.

이것은 카탈로그 도전이므로, 이것은 가장 짧은 해결책으로 언어를 찾는 것이 아닙니다 (빈 프로그램이 트릭을 수행하는 곳이 있습니다)-이것은 모든 언어에서 가장 짧은 해결책을 찾는 것입니다. 따라서 답변이 수락 된 것으로 표시되지 않습니다.

목록

이 게시물의 맨 아래에있는 스택 스 니펫은 답변 a) 언어 당 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 카탈로그를 생성합니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

## Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

## Ruby, <s>104</s> <s>101</s> 96 bytes

헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

## Perl, 43 + 2 (-p flag) = 45 bytes

언어 이름을 링크로 만들면 스 니펫에 표시됩니다.

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


13
이것을 닫은 사람은 다른 사람이 인기 콘테스트입니다 ...
TheDoctor

21
이것은 HQ9 + 인터프리터 골프 만들기의 하위 작업입니다 .
Geobits

4
@ CᴏɴᴏʀO'Bʀɪᴇɴ 아직 VTCd하지 않았지만 여전히 그것에 대해 어떻게 생각하는지 결정합니다. 어느 쪽이든, 나는 다른 사람의 답변 (또는 스 니펫)이 경쟁력유지 하면서 직접 복사 / 붙여 넣을 수 있다고 생각합니다 .
Geobits

13
quartata는 이미 몇 주 전에 99BB 카탈로그를 샌드 박스로 게시했으며 게시 할 계획이었습니다.
Alex A.

13
@GamrCorps 챌린지가 시작된 후에 불필요하게 규칙을 변경하지 마십시오. 출력의 문자는 선택 사항이 아니어야합니다.
feersum

답변:


43

C #을 285 298 289 바이트

(코드 골프에서의 첫 시도 ...)

class d{static void Main(){for(int b=99;b>0;)System.Console.Write("{0}{6}{1}{2}, {0}{6}{1} of beer. {3}, {4}{6}{5}{2}.{7}",b,b==1?"":"s"," of beer on the wall",b==1?"Go to the store and buy some more":"Take one down and pass it around",b==1?99:b-1,b==2?"":"s"," bottle",b--<2?"":"\n\n");}}

약간 골퍼되지 않은 :

class d{
    static void Main(){
        for(int b = 99; b > 0;){
            System.Console.Write("{0}{6}{1}{2}, {0}{6}{1} of beer.\n{3}, {4}{6}{5}{2}.{7}", b, b==1 ? "" : "s", " of beer on the wall", b == 1 ? "Go to the store and buy some more" : "Take one down and pass it around", b == 1 ? 99 : b-1, b== 2 ? "" : "s", " bottle", b--<2 ? "" : "\n\n");
        }
    }
}

10
팁-문자열 대신 var 사용 :)
Belfield

2
" bottle"더 나은 방법이 있다고 확신하지만 2 바이트 의 형식 인수로 대체 하면 병이 3 번 있으면 눈이 아프다 ...
Sven Writes Code

4
b==1로 교체 할 수 있습니다 b<2.
LegionMammal978

2
for 루프는 다음과 같이 작성할 수 있습니다for(int b = 100; b--> 1;)
Yassin Hajaj

2
그런 다음 챌린지 작성자가 후행 줄 바꿈이 허용되는지 여부를 결정해야 할 수도 있습니다.
Florian Bach

31

Motorola MC14500B 머신 코드 , 46612 바이트

긴 이유로, 프로그램을 여기에 게시 할 수 없습니다. 그러나 여기는 16 진수이진수 ( 0s로 채워짐) 에서 찾을 수 있습니다 .


Motorola MC14500B 머신 코드에서 가능한 가장 짧은 프로그램입니다. 그것은 단지 구성 10001001( 89각각); 각 출력 비트마다 하나의 오피 코드.

93,224 개의 하프 바이트 opcode를 사용하고 한 번에 한 비트 씩 노래 가사를 출력합니다. 이것이 유일하게 가능한 출력 방법입니다.

관심이있는 사람들을 위해 출력은 I / O 핀의 # 3 (16)에 간다.


설명

8    Store the register's value
9    Store the logical complement of the register's value

레지스터는에서 시작합니다 0.


코드 퀴즈

  • 16 진수 93224입니다 8s와 9긴이야.

  • 진은 745792입니다 1s와 0긴이야.

  • 아래의 Python 2 코드를 사용하여 코드를 생성했습니다. 0이진 및 116 진 입력 .

    a,b=["8","9"]if input()else["00001000","00001001"]
    f="""99 Bottles of Beer lyrics"""
    print''.join(b if int(i)else a for i in''.join((8-len(bin(i)[2:]))*'0'+bin(i)[2:]for i in bytearray(f)))

4
... 당신은 그냥 가서 문자열 발전기의 일종없이 모든 출력이 작성하지 않은 나에게 알려주십시오 : C
애디슨 크럼프

1
P @VoteToClose : 새로운 "코드 하찮은 일"섹션을 참조하십시오
자크 빌 게이츠

링크가 끊어졌습니다 :(
ETHproductions

집에 돌아올 때 고칠 게요. 죄송합니다) : @ETHproductions
Zach Gates

28

Vitsy, 0 바이트



진심으로 나에게 아무런 의미가 없습니다. (@Mego 정말 죄송합니다.;))

온라인으로 사용해보십시오! ( "실행"을 누르십시오)


7
P : 단면이 0 바이트에서 할 수 있도록 O_O 나는 흥미있는 뭔가가 필요
코너 오브라이언

4
@ CᴏɴᴏʀO'Bʀɪᴇɴ " Simplex가 0 바이트로 할 수있는 유용한 것이 필요 합니다."
Martin Ender

3
@VoteToClose-어떻게 작동합니까? 나는 솔직히 모른다, 나는 코드 골퍼가 아니지만, 여기에 와서 사람들과 언어가하는 것을 즐기는 것을 즐긴다. 그러나 나는 이것을 이해할 수 없다. 인상적으로 보이기 때문에 +1!
Jonnny

1
@Jonnny 통역사의 파일 핸들러를 보려면 여기를 클릭하십시오. 파일 처리기는 파일에 0 바이트가 포함되어 있으면 가사를 인쇄합니다. c :
애디슨 크럼프

1
@ Jonnny 그래-그것은 진행중인 작업입니다. 언젠가는 심각하게 나아질 것입니다. 하지만 지금은 ... 기다립니다 당신이 좋은 골프 언어를 원한다면, 심각하게 대답을 참조하십시오, 그것에 미친 물건이 있습니다.
애디슨 크럼프

27

진심으로 , 1 바이트

N

스택이 비어 있으면 (시작 부분에 있음) N가사를 푸시합니다. 그런 다음 EOF에서 암시 적으로 인쇄됩니다.

심각하게 인터프리터를 수정 한 @Mego에게 감사드립니다.


22
Martin은 Hello World 과제에서 "> 골프가 많지 않은 언어에서는 지루한 (그러나 유효한) 답변을 공표하지 말아야합니다. 가능한 한 완전한 카탈로그를 컴파일하려고 할 때이 질문에 여전히 유용합니다. 그러나 저자가 실제로 코드를 골프화하기 위해 노력해야하는 언어로 답을 주로 찬성하라. " 이 답변은 흥미롭지 않지만 유효하고 가장 짧은 솔루션입니다.
lirtosiast

1
질문을 읽을 때 심각한 답변을 올리는 것을 기다릴 수 없었습니다. 그러나 기다릴 필요가없는 것처럼 보입니다. :)
Hexaholic

8
Seriusly ????????
Vajura

1
나는 N:)를 사용하지 않고 솔루션을 볼 수 있기를 기대합니다.
Mego

1
예-4 개의 투표권이 있으며 답변이 유효합니다. 나는 여기에 가장 많이 언급 된 의견에 동의합니다.
애디슨

19

자바 스크립트 ES6, 230 218 198 196 192 188 185 바이트

for(x=99,z=(a=' on the wall')=>`${x||99} bottle${1-x?'s':''} of beer`+a;x;)alert(z()+', '+z`.
`+(--x?'Take one down and pass it around, ':'Go to the store and buy some more, ')+z()+'.')

깨끗하고 이해하기 쉬운 상태로 유지하면서 몇 바이트 만 잘라 내면됩니다.

3 가지 최신 개정판 :

for(x=99,z=a=>`${x||99} bottle${1-x?'s':''} of beer${a||' on the wall'}`;x;)alert(z()+', '+z(`.
`)+(--x?'Take one down and pass it around, ':'Go to the store and buy some more, ')+z()+'.')

for(x=99,z=a=>(x||99)+' bottle'+(1-x?'s':'')+' of beer',w=' on the wall';x;)alert(z()+w+', '+z()+(--x?`.
Take one down and pass it around, `:`.
Go to the store and buy some more, `)+z()+w+'.')

for(x=99,o=' bottle',q=b=o+'s',e=' of beer',w=e+" on the wall";x;)alert(x+b+w+', '+x+b+e+(--x?`.
Take one down and pass it around, `+x:`.
Go to the store and buy some more, 99`)+(b=1-x?q:o)+w+'.')

1
루프 컨트롤 외부에 변수를 넣어서 2 바이트 절약 :x=99;w=" on the wall";e=" of beer";o=" bottle";b=o+"s";for(z="Go to the store and buy some more, "+x+b;0<x;)console.log(x+(2>x?o:b)+e+w+", "+x+(2>x?o:b)+e+".\n"+(1>--x?z:"Take one down and pass it around, "+x+(2>x?o:b))+e+w+".")
Generic User

그것은 코드에서 2 바이트를 절약하는 것이 아닙니다. 실제로는 괄호를 제거합니다 (--x <1). 지금은 변수를 모두 유지하기 위해 가독성을 위해 for 문 안에 변수를 남겨 두겠습니다.
Adam Dally

1
@Stefnotch 궁금한 점이 있다면 함수 호출을 검사 하여이 편집 내용을 찾았습니다 ... 그러나 이것이 당신의 의도라고 생각하지 않습니다. 그래도 조언은 최후의 수단으로 관련이 있습니다.
Adam Dally

1
@ Paŭlo Ebermann 각 절에 대해 경고를 실행하지만 콘솔에서 실행되도록 console.log로 자유롭게 변경하면 194 바이트가됩니다. 한 번에 전체 가사를 경고하는 것은 Firefox에서 작동하지 않습니다. 적어도 ... 5-10 구절이 잘립니다.
Adam Dally

1
@Stefnotch. 1-x는 현재 유용한 것으로 입증되었습니다.
Adam Dally

18

자바 스크립트 ES6, 328 318 307 305 바이트

익명의 기능입니다. f=기능 f()을 수행하고 실행 하려면 시작 부분에 추가하십시오 .

x=>eval('s=o=>v=(o?o:" no more")+" bottle"+(1==o?"":"s");for(o="",i=99;i>0;)o+=`${s(i)}@ on the wall, ${v}@.\nTake one down, pass it around, ${s(--i)}@ on the wall.\n`;o+`No more bottles@ on the wall, no more bottles@.\nGo to the store and buy some more, 99 bottles@ on the wall.`'.replace(/@/g," of beer"))

2
하나의 긴 문자열 연결 이상인 경우 훨씬 더 흥미로울 것입니다.
Sp3000

9
임의의 ASCII 아트가 다른 사이트에서 복사 된 이유는 무엇입니까?
feersum

7
특히 작동하지 않기 때문에 다음과 같이 경고합니다.,+No, on the wall,,. Go to the store and buy some more, 99 bottles of beer on the wall.
Generic User

14

C, 197 196 바이트

main(i){for(i=299;i--/3;printf("%d bottle%s of beer%s%s",i/3?:99,"s"+5/i%2,i%3?" on the wall":i^3?".\nTake one down and pass it around":".\nGo to the store and buy some more",~i%3?", ":".\n\n"));}

나는이 접근법의 한계에 도달했다고 생각합니다.


1
"%d bottles of beer on the wallTake one down and pass it aroundGo to the store and buy some more,.\n"main(){for(;;)printf();}단독으로 126 바이트이므로 누군가가 문자열의 일부를 압축하거나 재사용 할 수있는 방법을 찾지 않으면 하드 하한을 나타냅니다. 나는 당신이 일반적으로 접근의 한계에 도달했다고 생각합니다.
Ray

12

자바 304 301 300 295 바이트

답변을 처음 게시합니다. 열거 형을 사용할 수 있지만 방법을 찾을 수 없다고 들었습니다.

interface A{static void main(String[]a){String b=" of beer",c=" on the wall",n=".\n",s;for(int i=100;i-->1;s=" bottle"+(i>1?"s":""),System.out.println(i+s+b+c+", "+i+s+b+n+(i<2?"Go to the store and buy some more, 99":"Take one down and pass it around, "+(i-1))+" bottle"+(i!=2?"s":"")+b+c+n));}}

언 골프

interface A {
    static void main(String[] a) {
        String b = " of beer", c = " on the wall", n = ".\n", s;
        for (int i = 100; i-- > 1; s = " bottle" + (i > 1 ? "s" : ""), System.out.println(i + s + b + c + ", " + i + s + b + n + (i < 2 ? "Go to the store and buy some more, 99" : "Take one down and pass it around, " + (i - 1)) + " bottle" + (i != 2 ? "s" : "") + b + c + n));
    }
}

덕분에 quartata, J Atkin그리고Benjamin Urquhart


당신은 사용하여 2 바이트를 저장할 수 있습니다 i<2대신 i==1하고 i>2여기에 : i!=2.
J Atkin

@JAtkin 감사합니다. 첫 번째는 괜찮습니다. 출력은 동일하게 유지됩니다. 나는 변경하지만 두 번째를 들어, 마지막 줄이 인쇄됩니다 99 bottle하지99 bottles
야신 Hajaj

1
결과적으로 자바에는 좋지만 그루비 (213 vs 245 바이트)에는 적합하지 않습니다.
J Atkin

1
실제로 groovy는 JVM 언어 중 하나입니다. 대부분의 응용 프로그램에서 그루비 코드는 동일한 작업을 수행하는 Java 코드보다 짧습니다. goovy-lang.org
J 앳킨

1
트윗 담아 가기 그것을 수정했습니다!
Yassin Hajaj

11

667 바이트의 유해한 것으로 간주되는 템플릿

Ap<Fun<Ap<Fun<Cat<Cat<Cat<Cat<Ap<A<1,1>,A<1>>,A<2,1>>,St<44,32>>,Ap<A<1,1>,A<1>>>,If<A<1>,Cat<Cat<Cat<Cat<St<46,10,84,97,107,101,32,111,110,101,32,100,111,119,110,32,97,110,100,32,112,97,115,115,32,105,116,32,97,114,111,117,110,100,44,32>,Ap<A<1,1>,Sub<A<1>,T>>>,A<2,1>>,St<46,10,10>>,Ap<A<0>,Sub<A<1>,T>>>,Cat<Cat<Cat<St<46,10,71,111,32,116,111,32,116,104,101,32,115,116,111,114,101,32,97,110,100,32,98,117,121,32,115,111,109,101,32,109,111,114,101,44,32>,Ap<A<1,1>,I<98>>>,A<2,1>>,St<46>>>>>,I<98>>>,Fun<Cat<Cat<Cat<Add<A<1>,T>,St<32,98,111,116,116,108,101>>,If<A<1>,St<'s'>,St<>>>,St<32,111,102,32,98,101,101,114>>>,St<32,111,110,32,116,104,101,32,119,97,108,108>>

확장 된 종류 :

Ap<
    Fun<
        Ap<
            Fun<
                Cat<
                    Cat<Cat<Cat< Ap<A<1,1>,A<1>> , A<2,1> >, St<44,32> >, Ap<A<1,1>,A<1>> >,
                    If<A<1>,
                        Cat<Cat<Cat<Cat< St<46,10,84,97,107,101,32,111,110,101,32,100,111,119,110,32,97,110,100,32,112,97,115,115,32,105,116,32,97,114,111,117,110,100,44,32> , Ap<A<1,1>,Sub<A<1>,T>> >, A<2,1> >, St<46,10,10> >, Ap<A<0>,Sub<A<1>,T>> >,
                        Cat<Cat<Cat< St<46,10,71,111,32,116,111,32,116,104,101,32,115,116,111,114,101,32,97,110,100,32,98,117,121,32,115,111,109,101,32,109,111,114,101,44,32> , Ap<A<1,1>,I<98>> >, A<2,1> >, St<46> >
                    >
                >
            >,
            I<98>
        >
    >,
    Fun< Cat<Cat<Cat< Add<A<1>,T> , St<32,98,111,116,116,108,101> >, If<A<1>,St<'s'>,St<>>  >, St<32,111,102,32,98,101,101,114> > >,
    St<32,111,110,32,116,104,101,32,119,97,108,108>
>

11

하스켈 228 223 바이트

o=" of beer on the wall"
a n=shows n" bottle"++['s'|n>1]
b 1="Go to the store and buy some more, "++a 99
b n="Take one down and pass it around, "++a(n-1)
f=[99,98..1]>>= \n->[a n,o,", ",a n," of beer.\n",b n,o,".\n\n"]>>=id

함수 f는 가사가 포함 된 문자열을 반환합니다.


10

/// , 341 바이트

/-/\/\///+/ bottle-)/\/&\/<\/
-(/\/\/?\/ ->/+s of beer-^/> on the wall-!/^,-$/>.
-@/$Take one down and pass it around,-#/^.
-*/?1@?0#<0!?0@-%/99!?9@?8#<8!?8@?7#<7!?7@?6#<6!?6@?5#<5!?5@?4#<4!?4@?3#<3!?3@?2#<2!?2@?1#<1!-&/?9#
%*-</
9(9/%*/</
8(8)7(7)6(6)5(5)4(4)3(3)2(2)1(1)0(0-
0/
- 0/ /#/1+s/1+/
% 01$Go to the store and buy some more, 099^.

이 코드에 대한 적절한 설명을 작성하려면 99 년이 필요합니다.

아마도 모든 단계의 결과를 포함시킬 것입니다 ...

기본적으로 이것은 ///의 모든 대답과 마찬가지로 가사를 반복적으로 압축합니다 .

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

감압의 각 단계

교체와 교체가 뒤 따르기 때문에 문자열 //이 자주 나타납니다.

내가 압축하기로 결정 자주 나타납니다 //으로 -.

압축이 풀리면 결과는 다음과 같습니다.

/+/ bottle//)/\/&\/<\/
//(/\/\/?\/ //>/+s of beer//^/> on the wall//!/^,//$/>.
//@/$Take one down and pass it around,//#/^.
//*/?1@?0#<0!?0@//%/99!?9@?8#<8!?8@?7#<7!?7@?6#<6!?6@?5#<5!?5@?4#<4!?4@?3#<3!?3@?2#<2!?2@?1#<1!//&/?9#
%*//</
9(9/%*/</
8(8)7(7)6(6)5(5)4(4)3(3)2(2)1(1)0(0//
0/
// 0/ /#/1+s/1+/
% 01$Go to the store and buy some more, 099^.

문자열 bottle은 세 번만 나타 났지만 +어쨌든 압축했습니다 .

/)/\/&\/<\/
//(/\/\/?\/ //>/ bottles of beer//^/> on the wall//!/^,//$/>.
//@/$Take one down and pass it around,//#/^.
//*/?1@?0#<0!?0@//%/99!?9@?8#<8!?8@?7#<7!?7@?6#<6!?6@?5#<5!?5@?4#<4!?4@?3#<3!?3@?2#<2!?2@?1#<1!//&/?9#
%*//</
9(9/%*/</
8(8)7(7)6(6)5(5)4(4)3(3)2(2)1(1)0(0//
0/
// 0/ /#/1 bottles/1 bottle/
% 01$Go to the store and buy some more, 099^.

그런 다음 )에 해당 /&/</개행 다음과 (에 대응 //?/ 종종 나중에 사용될되는 패턴 :

/>/ bottles of beer//^/> on the wall//!/^,//$/>.
//@/$Take one down and pass it around,//#/^.
//*/?1@?0#<0!?0@//%/99!?9@?8#<8!?8@?7#<7!?7@?6#<6!?6@?5#<5!?5@?4#<4!?4@?3#<3!?3@?2#<2!?2@?1#<1!//&/?9#
%*//</
9//?/ 9/%*/</
8//?/ 8/&/</
7//?/ 7/&/</
6//?/ 6/&/</
5//?/ 5/&/</
4//?/ 4/&/</
3//?/ 3/&/</
2//?/ 2/&/</
1//?/ 1/&/</
0//?/ 0//
0/
// 0/ /#/1 bottles/1 bottle/
% 01$Go to the store and buy some more, 099^.

이제 유용한 문자열을 압축 해제합니다.

  • > 압축을 풀다 bottles of beer
  • ^ 압축을 풀다 bottles of beer on the wall
  • !로 압축을 풀고 위의 ^,위치 ^는 어디 입니까 ?
  • $로 압축을 풉니 다 >.\n. 여기서 >첫 번째 규칙 \n은 개행입니다.
  • @압축 해제에 $이어서 Take one down and pass it around,, 여기서 $상기 규칙이다.

압축 해제 된 코드는 다음과 같습니다.

/*/?1 bottles of beer.
Take one down and pass it around,?0 bottles of beer on the wall.
<0 bottles of beer on the wall,?0 bottles of beer.
Take one down and pass it around,//%/99 bottles of beer on the wall,?9 bottles of beer.
Take one down and pass it around,?8 bottles of beer on the wall.
<8 bottles of beer on the wall,?8 bottles of beer.
Take one down and pass it around,?7 bottles of beer on the wall.
<7 bottles of beer on the wall,?7 bottles of beer.
Take one down and pass it around,?6 bottles of beer on the wall.
<6 bottles of beer on the wall,?6 bottles of beer.
Take one down and pass it around,?5 bottles of beer on the wall.
<5 bottles of beer on the wall,?5 bottles of beer.
Take one down and pass it around,?4 bottles of beer on the wall.
<4 bottles of beer on the wall,?4 bottles of beer.
Take one down and pass it around,?3 bottles of beer on the wall.
<3 bottles of beer on the wall,?3 bottles of beer.
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 bottles of beer on the wall.
<1 bottles of beer on the wall,//&/?9 bottles of beer on the wall.

%*//</
9//?/ 9/%*/</
8//?/ 8/&/</
7//?/ 7/&/</
6//?/ 6/&/</
5//?/ 5/&/</
4//?/ 4/&/</
3//?/ 3/&/</
2//?/ 2/&/</
1//?/ 1/&/</
0//?/ 0//
0/
// 0/ / bottles of beer on the wall.
/1 bottles/1 bottle/
% 01 bottles of beer.
Go to the store and buy some more, 099 bottles of beer on the wall.

9

Vim, 139 바이트

xsot 로 인해 6 바이트를 절약했습니다 .

i, 99 bottles of beer on the wall.<ESC>YIGo to t<SO> store and buy some more<ESC>qa
3P2xgJX$12.+<CAN>YITake one down a<SO> pass it around<ESC>o<ESC>q98@adk?s
xn.n.ZZ

이것은 Vim 명령을 골프화하려는 첫 번째 시도이지만 분명히 인기가 있습니다. ZZ허용되는 표준 인 것처럼 바이트 수 (파일에 쓰고 끝내기)에 마지막 을 포함 시켰습니다 .

참고 : 임무 완수 .


설명

Command                                    Effect
-------------------------------------------------------------------------------------------
i, 99 bottles of beer on the wall.<ESC>    insert text at cursor
Y                                          copy this line into buffer
IGo to t<SO> store and buy some more<ESC>  insert text at beginning of line
                                           auto-complete "the" (<Ctrl-N>, searches forward)
qa                                         begin recording macro into "a"
<LF>                                       move down one line (if present)
3P                                         paste 3 times before cursor
2x                                         delete 2 characters at cursor
gJ                                         join this line with next (without space between)
X                                          delete character before cursor
$                                          move to last non-whitespace character of line
12.                                        repeat the last edit command (X) 12 times
+                                          move to column 0 of next line
<CAN>                                      numeric decrement (<Ctrl-X>)
Y                                          copy this line into buffer
ITake one down a<SO> pass it around<ESC>   insert text at beginning of line
                                           auto-complete "and" (<Ctrl-N>, searches forward)
o<ESC>                                     insert text on new line
q                                          stop recording macro
98@a                                       repeat macro "a" 98 times
dk                                         delete upwards (this line and the one above it)
?s<LF>                                     move to previous /s/
x                                          delete character at cursor
n.n.                                       repeat last match and delete 2 times
ZZ                                         write to file and exit

1
약간의 개선 :i99 bottles of beer on the wall.<ESC>Yqa3P$r,J5wDr.+<CAN>YITake one down and pass it around, <ESC>o<ESCjq98@aiGo to the store and buy some more, <ESC>kdk?s<LF>xnxnxZZ
xsot

@xsot 감사합니다. 어떻게 든 완전히 간과 /하고 ?.
primo

btw이 개선으로 anagol에서 153에 도달 할 수 있습니다
xsot

@xsot 도착;)
primo

8

자바 스크립트 ES6, 237 217 208 203 195 193 189 186 바이트

골프를 치는 것은 꽤 어려워지고 있습니다 ...
편집 1 : 누군가가 완전히 나를 능가했습니다. 최고의 자바 스크립트 답변을 원한다면 열심히 노력해야하는 것처럼 보입니다.
편집 2 : 솔직히 골프를 그랬다는 것을 믿을 수 없습니다!

for(i=99,Y=" on the wall",o=k=>k+(i||99)+` bottle${i==1?'':'s'} of beer`;i;)alert(o``+Y+o`, `+o(--i?`.
Take one down and pass it around, `:`.
Go to the store and buy some more, `)+Y+`.`)

어딘가 엉망이 되었습니까? 또한 사용에 대해 사과 alert당신이 내 코드를 테스트로 교체 할 경우 console.log.

현재 다른 주목할만한 Javascript 답변이 있습니다 : "99 Bottles of Beer" . 확인 해봐! :디


나는 당신의 조건을 다시 검사하고 당신은 몇 바이트를 잘라낼 수 있어야합니다. 그래도 좋은 노력!
Adam Dally

@AdamDally Ok !! : D 그러나 다른 사람들의 자료를 복사하는 것을 좋아하지 않습니다 ... (코드를 복사 한 경우 죄책감을 느낄 것입니다 ... 개선 된 점을 발견하면 "허용 될 수 있지만") : D
Stefnotch

@AdamDally Yay, 나는 내 기능을 어지럽히고 많은 바이트를 절약했습니다! (점선이 점점 길어지고 있습니다.)
Stefnotch

우수한! 내가 완전히 간과 한 다른 길이 없다면 우리 둘 다 끝이 났다고 생각합니다.
Adam Dally

7

자바 스크립트 ES6, 210 209 205 199 198 196 바이트

s=""
for(i=299;--i>1;s+=`${i/3|0||99} bottle${5/i^1?"s":""} of beer`+(i%3?" on the wall":i^3?`.
Take one down and pass it around`:`.
Go to the store and buy some more`)+(~i%3?", ":`.

`));alert(s)

이것은 C 제출의 원유 번역입니다. 실제로 자바 스크립트를 알지 못하므로 개선의 여지가 있습니다.

편집 : 깔끔한, 나는 백틱을 발견


console.logwith 대신 바꿀 alert수 있고 "대신`를 사용할 수 있습니다. 그러면 \ n을 줄 바꿈으로 바꿀 수 있습니다. 틱은 템플릿 문자열에 사용되며 문자열에는 줄 바꿈이있을 수 있습니다 ...)
Stefnotch

1
다른 사람 console.log이 테스트하기 쉬운 것처럼 나를 이길 수 없다면 출력을 내버려 둘 것 입니다. 어쨌든, 나를 백틱에 노출시켜 주셔서 감사합니다!
xsot

우와, 너를 능가했다! 또한 ||를 사용해 주셔서 감사합니다. 귀하의 코드에서, 그것은 확실히 편리했습니다 ... (Meh, 당신은을 변경할 수 console.log있으며 내 승리는 아무것도 줄어들 것입니다 .. XD)
Stefnotch

1
당신은 따라갈 도전을 ​​증명하고 있습니다! 아아, 코드의 고장을 보는 것이 흥미로울 것입니다.
Adam Dally

1
@AdamDally 기본적으로 각 구절은 다음과 같은 구조로 세 부분으로 나뉩니다 %d bottle%s of beer%s%s. 각 구절의 색인 (병 수)은 i/3|0각 부분 문자열의 색인이 단순히으로 계산됩니다 i%3.
xsot

7

Brainfuck, 743 바이트

++++++++++>>--->++++>------>-->>++>+>>+>->++[[>+++++++[>++>+>+<<<-]<-]+<+++]>>>>>--
>>-->>++>->+++[<]>[-<<+[<->-----]<---[<[<]>[->]<]+<[>-]>[-<++++++++++<->>>]-[<->---
--]<+++[<[<]>[+>]<]<->>>[>[[>]<<<<.<<<<---.>>>-.<<<++++.<.>>>.-.<<.<.>-.>>+.<+++.>-
.<<<.>---.>>.<<+++.<.>>>++.<<---.>----..<<.>>>>--.+++<<+.<<.>.>--.>-.<+++.->-.+<<++
+.<<.>.<<<<-<]>[[>]<<<-.<<<.<<<.>>.>.<<< . > > .<++++.---.<.>>-.+.>.<--.<.<.>----.>
>-.<<+++.<.>--.>+++.++++.<<.>>------.>+.--.<<+++.<.>>>.++.<-.++<.-<<.>.<<<<-<<<++++
+++++.>>>]<+>]<++[<<[<]>[.>]>>>>>>.>--.>>.<..->>.<<<+++.<<<<-[>>>>>.[<]]<[>]>+>>>.>
>>.<<+.<.>----.+++..->-.++[<<]<-[>>>>>.>>>.-.+<<<.>>.<++++.---.<.>>+++.---<----.+++
>>>..[<<]]<<[>]>-[>>>>++.--<.<<<+[>>>.<<<<]>[>]<-<]>>[>>.>.<<<<]>[<<++>]<[>]<-]>+>]

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

위의 지침을 저장하기 위해 셀을 몇 군데에 배치하는 것을 사용합니다. 또한 755 지침 에서 랩핑되지 않은 버전을 만들었습니다 .


비 압축

다음은 Brainfuck Annotation Language의 폴리 글롯 입니다.

; byte sequence
; \n _ _ _ _ c \n comma space d t o l T G
++++++++++>>
--->++++>------>-->>++>+>>+>->++
[[>+++++++[>++>+>+<<<-]<-]+<+++]
>>>>>-->>-->>++>->+++[<]

c = 0
n = 100

>
while(n)
[
  n = n minus 1
  -<<
  N = str(n)
  ; first time \n _ becomes 9 9
  +[<->-----]<---[<[<]>[->]<]
  +<[>-]>[-<++++++++++<->>>]
  -[<->-----]<+++[<[<]>[+>]<]

  <->>>
  if(c)
  [
    >
    if(n)
    [
      'Take one down and'
      [>]<<<<.<<<<---.>>>-.<<<++++.<.>>>.-.<<.<.>-.>>+.<+++.>-.<<<.>---.>>.<<+++.
      ' pass it around' comma space
      <.>>>++.<<---.>----..<<.>>>>--.+++<<+.<<.>.>--.>-.<+++.->-.+<<+++.<<.>.<<<<-<
    ]>
    else
    [
      'Go to the store and'
      [>]<<<-.<<<.<<<.>>.>.<<<.>>.<++++.---.<.>>-.+.>.<--.<.<.>----.>>-.<<+++.
      ' buy some more' comma space
      <.>--.>+++.++++.<<.>>------.>+.--.<<+++.<.>>>.++.<-.++<.-<<.>.<<<<-
      N = '9'
      N
      <<<+++++++++.>>>
    ]
    <+>
  ]

  c = c plus 2
  <++

  while(c)
  [
    N
    <<[<]>[.>]>>>
    ' bottle'
    >>>.>--.>>.<..->>.<<<+++.<<<<
    if(n minus 1) 's'
    -[>>>>>.[<]]<[>]>+
    ' of beer'
    >>>.>>>.<<+.<.>----.+++..->-.++

    [<<]<-
    if(c minus 1)
    [
      ' on the wall'
      >>>>>.>>>.-.+<<<.>>.<++++.---.<.>>+++.---<----.+++>>>..[<<]
    ]

    <<[>]>-
    if(c minus 2)
    [
      period newline
      >>>>++.--<.<<<+
      if(c minus 1) newline
      [>>>.<<<<]>[>]<-<
    ]>>
    else
    [
      comma space
      >>.>.<<<<
    ]

    if(not n) c = c minus 2
    >[<<++>]

    c = c minus 1
    <[>]<-
  ]

  c = 1
  >+>
]

6

파이썬 2, 204 바이트

n=198
while n:s="bottle%s of beer"%"s"[:n^2>1];print n%2*"GToa kteo  otnhee  dsotwonr ea nadn dp absusy  isto maer omuonrde,,  "[n>1::2]+`n/2or 99`,s,"on the wall"+[", %d %s."%(n/2,s),".\n"[:n]][n%2];n-=1

사양은 공백과 관련하여 상당히 지정되지 않았으므로 여기서 마지막 줄에는 단일 줄 바꿈 개행이 필요하다고 가정합니다. 사양에 달리 명시되어 있으면이 답변을 업데이트하겠습니다.

나는 이것에 꽤 만족하지만, 무정부 상태의 골프를 보면 아마도 다른 접근법으로 여전히 골프를 칠 수 있다고 생각합니다.


6

미로 , 1195 1190 932 바이트

"{"9"
^ }
 ""
 <
 713.101.801..:611.111.89.23}!:({.23.44.001.011.711.111.411.79.23.611.501.23..:511.79.211.23.001.011.79.23.011.911.111.001.23.101.(.:111.23.101.701.79.48\.411..:101.89.23.201.111.23.511.101.801..:611.111.89.23}!:{.23.44..:801.79.911.23.101.401.611.23.(.:111.23.411..:101.89.23.201.111.23.511.101.801..:611.111.89.23}!:{
 _
 3`<
 _ ( 
""""
"
{(32.111.102.32.98.101:..114.32.111:.(.32.116.104.101.32.119.97.108:..46.\\49.32.98.111.116:..108.101.32.111.102.32.98.101:..114.32.111:.(.32.116.104.101.32.119.97.108:..44.32.49.32.98.111.116:..108.101.32.111.102.32.98.101:..114.46.\71.111.32.116.111.32.116.104.101.32.115:.).111.114.101.32.97.110.100.32.98.117.121.32.115.111.109.101.32.109.111.114.101.44.32.9!9!32.98.111.116:..108.101.115.32.111.102.32.98.101:..114.32.111:.(.32.116.104.101.32.119.97.108:..46.@
 )
 }
 <
 87\\.64..:801.79.911.23.101.401.611.23.(.:111.23.411..:101.89.23.201.111.23.511
 _
 3`<
 _ ( 
v"""

이것은 약간 과도합니다 ...

Labyrinth는 문자열을 인쇄하는 데 특히 좋지는 않지만 (모든 문자 코드를 푸시해야하기 때문에) 더 길지만 짧은 줄을 사용하고 그리드 회전으로 더 화려하게 만드는 것이 더 좋습니다.

골프 개선이이 코드의 구조를 실질적으로 바꿀 것이라고 생각하기 때문에, 골프를 더하는 방법에 대한 아이디어가 없을 때까지 설명을 기다릴 것입니다.


6

파이썬 2, 195

i=198
while i:s=`i/2or 99`+' bottle%s of beer'%'s'[1<i<4:];print['%s, '+s+'.','Take one down and pass it around, %s.\n',"Go to the store and buy some more, %s."][i%2+1/i]%(s+' on the wall');i-=1

i/2에서 아이디어 SP3000의 답변을 .


6

윈도우 배치, 376 바이트

매우 길고 못생긴 :

@echo off
setlocal enabledelayedexpansion
set B=bottles
set C=on the wall
set D=of beer
for /l %%* in (99,-1,1) do (
set A=%%*
if !A! EQU 1 set B=bottle
echo !A! !B! !D! !C!, !A! !B! !D!.
set /a A=!A!-1
if !A! EQU 1 set B=bottle
if !A! EQU 0 (
echo Go to the store and buy some more, 99 bottles !D! !C!.
) else (
echo Take one down and pass it around, !A! !B! !D! !C!.
echo.
))

5

파이썬, 254 바이트

b,o,s,t="bottles of beer","on the wall","bottle of beer",".\nTake one down and pass it around,"
i=99;exec'print i,b,o+",",i,b+t,i-1,b,o+".\\n";i-=1;'*97
print"2",b,o+", 2",b+t+" 1",s,o+".\n\n1",s,o+", 1",s+".\nGo to the store, buy some more, 99",b,o+"."

아주 간단하고 가장 일반적인 문구를 할당하고 99에서 3까지 각 비트를 인쇄 한 다음 변수와 문자열을 더하여 마지막 줄을 인쇄합니다.


5

줄리아 227 215 213 바이트

w=" on the wall"
b=" bottles"
o=" of beer"
k=b*o
for n=99:-1:1
println("$n$k$w, $n$k.
$(n>1?"Take one down and pass it around":"Go to the store and buy some more"), $(n>1?"$(n-1)$(k=b*"\b"^(n<3)*o)":"99$b"o)$w.
")end

문자열 보간 ( "$variable") 및 삼항을 사용하여 출력을 구성하고이를 STDOUT에 인쇄합니다.

Glen O 덕분에 14 바이트를 절약했습니다!


1
대신 (n>1?" bottles":" bottle")" of beer"에 사용 " bottle""s"^(n>1)*" of beer"하십시오. 그렇지 않으면 전원 으로 적용하려고하기 때문에 *필요 (n<1)합니다 (n>1)" of beer". 또한 while n>0over 를 사용하면 이점이 있습니까? ( for n=99:-1:1끝의 조건을 더 간단하게하고 별도의 요구를 피할 수 n=99있습니까)?
Glen O

또한 대신에 실제 줄 바꿈을 사용 \n하고 (대신 보간 중간 부분을 전환 ",n>1?...","사용, $(n>1?...")문자를 저장), 그리고 이동 , 은 한 번만 기록 할 필요가 있으므로, 다음 부분 이전에 조건 내부.
Glen O

사실, 잠시 동안의 제안에 부딪 치십시오-각 구절에서 마지막 숫자를 할 때 하나를 빼야한다는 것을 깨달았으므로 순 이익은 없습니다.
Glen O

@GlenO 항상 좋은 제안을 해주셔서 감사합니다!
Alex A.

1
나는 변경 사항을 제안 할 수 있기를 바랐습니다. 원래의 응답자가 수락하지 않고 편집 할 충분한 담당자가있는 경우 해당 옵션을 허용하지 않는 것이 약간 바보입니다. 어떤 식 으로든 발가락을 밟아서 죄송합니다. 방금 "맥주 병"부분의 평가를 끝까지 옮겼으므로 한 번만 수행하면 초기화됩니다. 또한 비트를 저장하기 위해 조건부 "s"대신 백 스페이스를 사용했습니다.
Glen O

5

자바 스크립트 ES6, 214 바이트

편집 : 이전 코드를 모두 삭제하고 이전 코드를 보려면 편집 내용을 봅니다.

제한된 팝업 :

p='.';o=" of beer";e=o+" on the wall";i=99;u=m=>i+" bottle"+(i==1?'':'s');while(i>0){alert(u()+e+", "+u()+o+p+(--i>0?"Take one down and pass it around, "+u()+e:"Go to the store and buy some more, 99 bottles"+e)+p)}

넓히는:

p='.';
o=" of beer";
e=o+" on the wall";
i=99;
u=m=>i+" bottle"+(i==1?'':'s');
while(i>0){
    alert(u()+e+", "+u()+o+p+(--i>0?"Take one down and pass it around, "+u()+e:"Go to the store and buy some more, 99 bottles"+e)+p)
}

@commenters : 15 바이트를 절약 한 화살표 기능 아이디어에 감사드립니다.

무한 맥주의 경우이 코드를 212 바이트로 사용하십시오.

p='.';o=" of beer";e=o+" on the wall";i=99;u=m=>i+" bottle"+(i==1?'':'s');while(i>0){alert(u()+e+", "+u()+o+p+(--i>0?"Take one down and pass it around, "+u()+e:"Go to the store and buy some more, "+u(i=99)+e)+p)}

1
코드를 실행할 수 없습니다. 어떤 브라우저 / 환경을 사용하고 있습니까? "SyntaxError : missing; before statement"또한, 화살표 함수를 살펴보십시오!
Stefnotch

구문 오류 +o'가로 변경됨을 찾기 위해 잠시 시간을 보냈습니다 +o+'. 또한 루프와 답변을 바꿀 수있는 기회를 보았습니다. 화살표 기능을 지금 점검 할 것입니다 :)
ŽaMan

1
마지막 솔루션의 경우 232 바이트 :b=a=>a+" bottle"+(1<a?"s":"");for(i=100;100>--i;)l="\n",p="."+l,o=" of beer",e=o+" on the wall",alert(l+b(i)+e+", "+b(i)+o+p+(1<i?"Take one down and pass it around, "+b(i-1)+e:"Go to the store and buy some more, "+b((i=100)-1)+e)+p)
일반 사용자

몇 가지 놀아 본 후 while루프를 고수하고 곧 결과 코드를 게시 할 것입니다. 코드 검토에 감사드립니다! :)
ŽaMan

5

CJam, 149 148 146 144 138 137 134 바이트

00000000: 39 39 7b 5b 22 2c 2e 22 22 01 bd 8f 2d b4 49 b5 f5  99{[",.""...-.I..
00000011: 9d bd 21 e8 f2 72 27 df 4d 4f 22 7b 32 36 39 62 32  ..!..r'.MO"{269b2
00000022: 35 62 27 61 66 2b 27 6a 53 65 72 28 65 75 5c 2b 2a  5b'af+'jSer(eu\+*
00000033: 7d 3a 44 7e 4e 4e 32 24 32 3e 29 34 24 4a 3c 5c 4e  }:D~NN2$2>)4$J<\N
00000044: 5d 73 27 78 2f 39 39 40 2d 73 2a 7d 2f 27 73 2d 5d  ]s'x/99@-s*}/'s-]
00000055: 22 07 9c 4b a2 4e 15 d7 df d5 82 88 c9 d9 a7 ad 37  "..K.N..........7
00000066: 16 7e 76 22 44 33 35 2f 28 5d 22 41 90 1d b1 f3 69  .~v"D35/(]"A....i
00000077: ba 3d 05 45 81 50 af 07 e4 1b 38 f7 19 22 44        .=.E.P....8.."D

위의 16 진 덤프는로 되돌릴 수 있습니다 xxd -r. CJam 통역사 에서 온라인으로 사용해보십시오 .

9 바이트의 추가 비용으로 총 143 바이트의 경우 인쇄 할 수없는 문자를 피할 수 있습니다.

99{[", X bottles of beer on the wall."NN2$2>)4$J<\N]s'X/99@-s*}/'s-]"Take one down and pass it around"*35/("Go to the store and buy some more"\

작동 원리

99{         e# For each I in [0 ... 98]:
  [         e# 
    ",."    e#     Push that string.
    "…"     e#     Push a string.
    {       e#     Define a decoder function:
      269b  e#       Convert the string from base 269 to integer.
      25b   e#       Convert from integer to base 25.
      'af+  e#       Add 'a' to each base-25 digit.
      'jSer e#       Replace j's with spaces.
      (     e#       Shift the first character from the resulting string.
      eu    e#       Convert it to uppercase.
      \+    e#       Prepend it to the remaining string.
      *     e#       Join the string/array on the stack, using the 
            e#       generated string as delimiter.
    }:D~    e#     Name the function D and execute it.
            e#     This pushes ", x bottles of beer on the wall.".
    NN      e#     Push two linefeeds.
    2$      e#     Push a copy of the generated string.
    2>)     e#     Discard the first two characters and pop the dot.
    4$      e#     Push another copy of the generated string.
    J<      e#     Discard all but the first 19 characters.
            e#     This pushes ", x bottles of beer on the wall".
    \N      e#     Swap the string with the dot and push a linefeed.
  ]s        e#   Collect in an array and cast to string.
  'x/       e#   Split at occurrences of 'x'.
  99@-      e#   Rotate I on top of 99 and compute their difference.
  s*        e#   Cast to string and and join.
            e#   This replaces x's with 99-I.
}/          e#
's-         e# Remove all occurrences of 's' for the last generated string.
]           e# Wrap the entire stack in an array.
"…"D        e# Join the array with separator "Take one down and pass it around".
35/(        e# Split into chunks of length 35 and shift out the first.
            e# This shifts out ", 99 bottles of beer on the wall.\n\n".
]           e# Wrap the modified array and shifted out chunk in an array.
"…"D        e# Join the array with separator "Go to the store and buy some more".

베이스 259 ? 흥미 롭군
lirtosiast

Base 256에 캐리지 리턴이 있었는데 온라인 인터프리터에서는 작동하지 않습니다. 다행히도 259는 ISO 8559-1 범위를 벗어나는 문자를 생성하지 않습니다.
Dennis

CJam은 GolfScript보다 2 바이트 이상 짧을 것이라고 생각했습니다. 그래도 137을 기대하지 않았습니다!
primo

1
@primo 공정하게 말하면 대부분의 절감액은 기본 전환에서 비롯됩니다. 안타깝게도 baseGolfScript에서 두 번 사용하면 이미 8 바이트가 추가됩니다.
Dennis

5

C, 303 299 297 바이트

#define B"%d bottle%s of beer"    
#define O" on the wall"
#define P printf(
#define V(n,m,S)q(n);P O);P", ");q(n);P S);q(m);P".\n");
*s[]={"","s"};q(n){P B,n,s[n>1]);}main(){for(int i=99;--i;){V(i+1,i,".\nTake one down and pass it around, ")P"\n");}V(1,99,".\nGo to the store and buy some more, ");}

로 컴파일하십시오 gcc -std=c99 -w.


1
300 바이트 다운 골프 ... 대 (INT I = 99 - I) {V는 (i + 1, I '....
글렌 데르-Pehrson

@ GlennRanders-Pehrson 감사합니다. 또한 main () 전에 줄 바꿈을 제거했습니다.
firefrorefiddle

5

GolfScript, 143 바이트

[99.{[', '\.' bottle''s of beer'@(:i!>' on the wall''.
'n].1>~;5$4<\'Take one down and pass it around'i}**'Go to the store and buy some more'](

여전히 개선의 여지가있을 수 있습니다. 최종 개정판에 가까워 졌다고 생각합니다.


3
anagol GolfScript 레코드 를 12 바이트 개선했습니다 .
primo

5

매쓰, 238 226 222 224 바이트

Martin Büttner 덕분에 몇 바이트를 절약했습니다.

a={ToString@#," bottle",If[#<2,"","s"]," of beer"}&;b=a@#<>" on the wall"&;Echo[{b@n,", ",a@n,".
"}<>If[n<2,"Go to the store and buy some more, "<>b@99<>".","Take one down and pass it around, "<>b[n-1]<>".
"]]~Do~{n,99,1,-1}

5

Brainfuck, 4028 바이트

이것은 매우 끔찍한 일입니다. 중복이 많고 비효율적이므로 상을받지 않습니다. 그러나 나는 그것을 시작했고 끝내기로 결심했다.

나는 이것을 시도하고 향상시킬 수 있지만, 아마도 내 두뇌가 망할 것이기 때문에 아마 아닐 것입니다.

골프

>>+++[-<+++<+++>>]>>++++++[-<++++++++++<++++++++++>>]<---<--->>>+++++[-<++++++>]
<++>>++++++++++[-<++++++++++>]<-->>++++++++++[-<+++++++++++>]<+>>++++++++++[-<++
++++++++>]<+>>++++++++++[-<++++++++++>]<++>>++++++++++[-<+++++++++++>]<++++++>>+
+++++++++[-<++++++++++>]<++++>>++++++++++[-<+++++++++++>]<-->>++++++++++[-<+++++
++++++>]<++++>>++++++++++[-<+++++++++++>]<+++++>>++++++++++[-<+++++++++++>]>++++
++++++[-<+++++++++++>]<+++++++++>>++++++++++[-<++++++++++>]<--->>+++++[-<++++++>
]<++>>++++[-<++++++++++++>]<---->>++++[-<++++++++++++>]<-->++++++++++>>+++++++++
+[-<+++++++++++>]<--->>++++++++++[-<++++++++++>]>++++++++++[-<+++++++++++>]<++>>
++++++++++[-<++++++++++>]<+++++>>++++++++++[-<+++++++++++>]<+++++++<<<<<<<<<<<<<
<<<<<<<<<<<<[>[->.>.>.>.>.>>>..>>.<<<<.>>>>>>.<<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>.<
<<<<<<<.>>.>>>>>>>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>>>>>>>>.>.<<<<<..>>>>>>>.<.<<<<<<
<<<<<<<<<.>.->.>.>.>>>..>>.<<<<.>>>>>>.<<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>.>>>>>>>.
>.<<<<<<<<<<<.>>>>>>>.>>>>>.<<<<<<<<<<<<<<.<<<.>>.>>>>>>>>.<<<<<<<.<<<.>>>>>>>>>
>>>>>>>>>.<<<<<<<<<<<<<<<<.>>>>>>>>>.<.>>>.<.<<.>>>>>>>>.<<<<<.>>>>>>.<<<<<<<.<<
<..>>>>.>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>>>.<.<<<<.<<<<<<.>>>>>>>>>>>>>>>>>>>.<<<<<
<<<<<<.>>>>>>>>.<<<<.<.<<<<<<<<<<<<<<<.>.>.>.>.>>>..>>.<<<<.>>>>>>.<<<<<<<<<.>>.
>>.<<<<.>.>>..>>>>>.<<<<<<<<.>>.>>>>>>>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>>>>>>>>.>.<<
<<<..>>>>>>>>.>..<<<<<<<<<<<<<<<<<<<]<->+++++++++>.>.>.>.>.>>>..>>.<<<<.>>>>>>.<
<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>.<<<<<<<<.>>.>>>>>>>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>
>>>>>>>.>.<<<<<..>>>>>>>.<.<<<<<<<<<<<<<<<.->.+++++++++>.>.>.>>>..>>.<<<<.>>>>>>
.<<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>.>>>>>>>.>.<<<<<<<<<<<.>>>>>>>.>>>>>.<<<<<<<<<<
<<<<.<<<.>>.>>>>>>>>.<<<<<<<.<<<.>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<<.>>>>>>>>>.<
.>>>.<.<<.>>>>>>>>.<<<<<.>>>>>>.<<<<<<<.<<<..>>>>.>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>
>>.<.<<<<.<<<<<<.>>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<.>>>>>>>>.<<<<.<.<<<<<<<<<<<<<<<
.>.>.>.>.>>>..>>.<<<<.>>>>>>.<<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>.<<<<<<<<.>>.>>>>>>
>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>>>>>>>>.>.<<<<<..>>>>>>>>.>..<<<<<<<<<<<<<<<<<<<<]
>--[->>.>.>.>.>>>..>>.<<<<.>>>>>>.<<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>.<<<<<<<<.>>.>
>>>>>>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>>>>>>>>.>.<<<<<..>>>>>>>.<.<<<<<<<<<<<<<<.->.
>.>.>>>..>>.<<<<.>>>>>>.<<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>.>>>>>>>.>.<<<<<<<<<<<.>
>>>>>>.>>>>>.<<<<<<<<<<<<<<.<<<.>>.>>>>>>>>.<<<<<<<.<<<.>>>>>>>>>>>>>>>>>>.<<<<<
<<<<<<<<<<<.>>>>>>>>>.<.>>>.<.<<.>>>>>>>>.<<<<<.>>>>>>.<<<<<<<.<<<..>>>>.>>>>>>>
.<<<<<<<<<<<<<<<.>>>>>>>>.<.<<<<.<<<<<<.>>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<.>>>>>>>>
.<<<<.<.<<<<<<<<<<<<<<.>.>.>.>>>..>>.<<<<.>>>>>>.<<<<<<<<<.>>.>>.<<<<.>.>>..>>>>
>.<<<<<<<<.>>.>>>>>>>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>>>>>>>>.>.<<<<<..>>>>>>>>.>..<
<<<<<<<<<<<<<<<<<<]>>.>.>.>.>>>..>>.<<<<.>>>>>>.<<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>
.<<<<<<<<.>>.>>>>>>>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>>>>>>>>.>.<<<<<..>>>>>>>.<.<<<<
<<<<<<<<<<.->.>.>.>>>..>>.<<<<.>>>>>>.<<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>.>>>>>>>.>
.<<<<<<<<<<<.>>>>>>>.>>>>>.<<<<<<<<<<<<<<.<<<.>>.>>>>>>>>.<<<<<<<.<<<.>>>>>>>>>>
>>>>>>>>.<<<<<<<<<<<<<<<<.>>>>>>>>>.<.>>>.<.<<.>>>>>>>>.<<<<<.>>>>>>.<<<<<<<.<<<
..>>>>.>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>>>.<.<<<<.<<<<<<.>>>>>>>>>>>>>>>>>>>.<<<<<<
<<<<<.>>>>>>>>.<<<<.<.<<<<<<<<<<<<<<.>.>.>.>>>..>>.<<<<.<<<.>>.>>.<<<<.>.>>..>>>
>>.<<<<<<<<.>>.>>>>>>>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>>>>>>>>.>.<<<<<..>>>>>>>>.>..
<<<<<<<<<<<<<<<<<.>.>.>.>>>..>>.<<<<.<<<.>>.>>.<<<<.>.>>..>>>>>.<<<<<<<<.>>.>>>>
>>>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>>>>>>>>.>.<<<<<..>>>>>>>.<.<<<<<<<<<<<<<<.++++++
++>.>.>.>>>..>>.<<<<.<<<.>>.>>.<<<<.>.>>..>>>>>.>>>>>>>.>.>---->>+++++++++>++++<
<<.<<<<<<<<<<<<<<<.<<.>>>>>.<<<.<<.>>>>>.>.<<<.<<<.>>>>>>>>>.<<<<.<<<.>>>>>>.<<<
<<.<<<.>>>>>>>>>>>>.<<.>>>>>>>>.<<<<<.<<<<<<<<<<<<.>>>>>>>>>>>>>>>>>>>>.<<.<<<<<
<.<<<<.<<<<<<<.>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<<<.>>>>>>>>>>.>>>>>>>.<<<<<<<<<
<<<<<<<<<.>>>>>>.<<<<<.>>>>>>>>>>>.<.<<<<<<<<<<<<<<..>.>.>.>>>..>>.<<<<.>>>>>>.<
<<<<<<<<.>>.>>.<<<<.>.>>..>>>>>.<<<<<<<<.>>.>>>>>>>>.>>>.<<<<<<<<.>.<<<.<<<.>>>>
>>>>>>>.>.<<<<<..>>>>>>>>.>.

언 골프

# SETUP COUNTERS
>>+++[-<+++<+++>>]
>>++++++[-<++++++++++<++++++++++>>]<---<--->>

# SETUP CONSTANTS
>+++++[-<++++++>]<++>
>++++++++++[-<++++++++++>]<-->        # B
>++++++++++[-<+++++++++++>]<+>        # O
>++++++++++[-<++++++++++>]<+>         # E
>++++++++++[-<++++++++++>]<++>        # F
>++++++++++[-<+++++++++++>]<++++++>   # T
>++++++++++[-<++++++++++>]<++++>      # H
>++++++++++[-<+++++++++++>]<-->       # L
>++++++++++[-<+++++++++++>]<++++>     # R
>++++++++++[-<+++++++++++>]<+++++>    # S
>++++++++++[-<+++++++++++>]           # N
>++++++++++[-<+++++++++++>]<+++++++++># W
>++++++++++[-<++++++++++>]<--->       # A
>+++++[-<++++++>]<++>                 # SPACE
>++++[-<++++++++++++>]<---->          # Comma
>++++[-<++++++++++++>]<-->            # Stop
++++++++++>                           # Newline
>++++++++++[-<+++++++++++>]<--->      # K
>++++++++++[-<++++++++++>]            # D
>++++++++++[-<+++++++++++>]<++>       # P
>++++++++++[-<++++++++++>]<+++++>     # I
>++++++++++[-<+++++++++++>]<+++++++   # U

# BACK TO START
<<<<<<<<<<<<<<<<<<<<<<<<<
[>
    [
        -> # Dec x0 counter
        .> # Print 0x char
        .> # Print x0 char
        .>
        .>.>>>..>>.<<<<.>>>>>>. # Bottles
        <<<<<<<<<.
        >>.>>.       # Of
        <<<<.
        >.>>..>>>>>. # Beer
        <<<<<<<<.
        >>.>>>>>>>>. # On
        >>>.
        <<<<<<<<.>.<<<. # The
        <<<.
        >>>>>>>>>>>.>.<<<<<.. # Wall
        >>>>>>>.     # Comma
        <.
        <<<<<<<<<<<<<<<.>.- # Counter with decrement
        >.
        >.>.>>>..>>.<<<<.>>>>>>. # Bottles
        <<<<<<<<<.
        >>.>>.       # Of
        <<<<.
        >.>>..>>>>>. # Beer
        >>>>>>>.     # Stop
        >.           # Newline
        <<<<<<<<<<<.>>>>>>>.>>>>>.<<<<<<<<<<<<<<. # Take
        <<<.
        >>.>>>>>>>>.<<<<<<<. # One
        <<<.
        >>>>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<<.>>>>>>>>>.<. # Down
        >>>. 
        <.<<.>>>>>>>>.  # And
        <<<<<.
        >>>>>>.<<<<<<<.<<<..    # Pass
        >>>>.
        >>>>>>>.<<<<<<<<<<<<<<<. # It
        >>>>>>>>.
        <.<<<<.<<<<<<.>>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<.>>>>>>>>. # Around
        <<<<. # Comma
        <.
        <<<<<<<<<<<<<<<.>. # 0x and x0
        >.
        >.>.>>>..>>.<<<<.>>>>>>. # Bottles
        <<<<<<<<<.
        >>.>>.  # Of
        <<<<.
        >.>>..>>>>>. # Beer
        <<<<<<<<.
        >>.>>>>>>>>. # On
        >>>.
        <<<<<<<<.>.<<<. # The
        <<<.
        >>>>>>>>>>>.>.<<<<<.. # Wall
        >>>>>>>>.    # Stop
        >..   # Newline x2
        <<<<<<<<<<<<<<<<<<<      # Reset loop
    ]
    <-
    >+++++++++
    >.>.
    >.
    >.>.>>>..>>.<<<<.>>>>>>. # Bottles
    <<<<<<<<<.
    >>.>>.       # Of
    <<<<.
    >.>>..>>>>>. # Beer
    <<<<<<<<.
    >>.>>>>>>>>. # On
    >>>.
    <<<<<<<<.>.<<<. # The
    <<<.
    >>>>>>>>>>>.>.<<<<<.. # Wall
    >>>>>>>.     # Comma
    <.
    <<<<<<<<<<<<<<<.- # 0x with decrement
    >.+++++++++ # x0 with increment
    >.
    >.>.>>>..>>.<<<<.>>>>>>. # Bottles
    <<<<<<<<<.
    >>.>>.       # Of
    <<<<.
    >.>>..>>>>>. # Beer
    >>>>>>>.     # Stop
    >.           # Newline
    <<<<<<<<<<<.>>>>>>>.>>>>>.<<<<<<<<<<<<<<. # Take
    <<<.
    >>.>>>>>>>>.<<<<<<<. # One
    <<<.
    >>>>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<<.>>>>>>>>>.<. # Down
    >>>. 
    <.<<.>>>>>>>>.  # And
    <<<<<.
    >>>>>>.<<<<<<<.<<<..    # Pass
    >>>>.
    >>>>>>>.<<<<<<<<<<<<<<<. # It
    >>>>>>>>.
    <.<<<<.<<<<<<.>>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<.>>>>>>>>. # Around
    <<<<. # Comma
    <.
    <<<<<<<<<<<<<<<.>. # Counter
    >.
    >.>.>>>..>>.<<<<.>>>>>>. # Bottles
    <<<<<<<<<.
    >>.>>.  # Of
    <<<<.
    >.>>..>>>>>. # Beer
    <<<<<<<<.
    >>.>>>>>>>>. # On
    >>>.
    <<<<<<<<.>.<<<. # The
    <<<.
    >>>>>>>>>>>.>.<<<<<.. # Wall
    >>>>>>>>.    # Stop
    >..   # Newline x2
    <<<<<<<<<<<<<<<<<<<<      # Reset outer loop
]
>-- # Decrement counter to only count from 7
# Last 8 loop
[
    -> # Dec counter
    >. # Print x0 char    
    >.
    >.>.>>>..>>.<<<<.>>>>>>. # Bottles
    <<<<<<<<<.
    >>.>>.       # Of
    <<<<.
    >.>>..>>>>>. # Beer
    <<<<<<<<.
    >>.>>>>>>>>. # On
    >>>.
    <<<<<<<<.>.<<<. # The
    <<<.
    >>>>>>>>>>>.>.<<<<<.. # Wall
    >>>>>>>.     # Comma
    <.
    <<<<<<<<<<<<<<.- # x with decrement
    >.
    >.>.>>>..>>.<<<<.>>>>>>. # Bottles
    <<<<<<<<<.
    >>.>>.       # Of
    <<<<.
    >.>>..>>>>>. # Beer
    >>>>>>>.     # Stop
    >.           # Newline
    <<<<<<<<<<<.>>>>>>>.>>>>>.<<<<<<<<<<<<<<. # Take
    <<<.
    >>.>>>>>>>>.<<<<<<<. # One
    <<<.
    >>>>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<<.>>>>>>>>>.<. # Down
    >>>. 
    <.<<.>>>>>>>>.  # And
    <<<<<.
    >>>>>>.<<<<<<<.<<<..    # Pass
    >>>>.
    >>>>>>>.<<<<<<<<<<<<<<<. # It
    >>>>>>>>.
    <.<<<<.<<<<<<.>>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<.>>>>>>>>. # Around
    <<<<. # Comma
    <.
    <<<<<<<<<<<<<<. # Count
    >.
    >.>.>>>..>>.<<<<.>>>>>>. # Bottles
    <<<<<<<<<.
    >>.>>.  # Of
    <<<<.
    >.>>..>>>>>. # Beer
    <<<<<<<<.
    >>.>>>>>>>>. # On
    >>>.
    <<<<<<<<.>.<<<. # The
    <<<.
    >>>>>>>>>>>.>.<<<<<.. # Wall
    >>>>>>>>.    # Stop
    >..   # Newline x2
    <<<<<<<<<<<<<<<<<<<     # Reset loop
]
# Last but 1 exception
>>. # Counter
>.
>.>.>>>..>>.<<<<.>>>>>>. # Bottles
<<<<<<<<<.
>>.>>.       # Of
<<<<.
>.>>..>>>>>. # Beer
<<<<<<<<.
>>.>>>>>>>>. # On
>>>.
<<<<<<<<.>.<<<. # The
<<<.
>>>>>>>>>>>.>.<<<<<.. # Wall
>>>>>>>.     # Comma
<.
<<<<<<<<<<<<<<.- # x with decrement
>.
>.>.>>>..>>.<<<<.>>>>>>. # Bottles
<<<<<<<<<.
>>.>>.       # Of
<<<<.
>.>>..>>>>>. # Beer
>>>>>>>.     # Stop
>.           # Newline
<<<<<<<<<<<.>>>>>>>.>>>>>.<<<<<<<<<<<<<<. # Take
<<<.
>>.>>>>>>>>.<<<<<<<. # One
<<<.
>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<<.>>>>>>>>>.<. # Down
>>>. 
<.<<.>>>>>>>>.  # And
<<<<<.
>>>>>>.<<<<<<<.<<<..    # Pass
>>>>.
>>>>>>>.<<<<<<<<<<<<<<<. # It
>>>>>>>>.
<.<<<<.<<<<<<.>>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<.>>>>>>>>. # Around
<<<<. # Comma
<.
<<<<<<<<<<<<<<. # Count
>.
>.>.>>>..>>.<<<<. # Bottle
<<<.
>>.>>.  # Of
<<<<.
>.>>..>>>>>. # Beer
<<<<<<<<.
>>.>>>>>>>>. # On
>>>.
<<<<<<<<.>.<<<. # The
<<<.
>>>>>>>>>>>.>.<<<<<.. # Wall
>>>>>>>>.    # Stop
>..   # Newline x2
# Last 1 exception
<<<<<<<<<<<<<<<<<. # Counter
>.
>.>.>>>..>>.<<<<. # Bottle
<<<.
>>.>>.       # Of
<<<<.
>.>>..>>>>>. # Beer
<<<<<<<<.
>>.>>>>>>>>. # On
>>>.
<<<<<<<<.>.<<<. # The
<<<.
>>>>>>>>>>>.>.<<<<<.. # Wall
>>>>>>>.     # Comma
<.
<<<<<<<<<<<<<<.++++++++ # x with reset to 99
>.
>.>.>>>..>>.<<<<. # Bottle
<<<.
>>.>>.       # Of
<<<<.
>.>>..>>>>>. # Beer
>>>>>>>.     # Stop
>.           # Newline
>----        # Change K to G
>>+++++++++  # Change P to Y
>++++        # Change I to M
<<<.<<<<<<<<<<<<<<<. # Go
<<.
>>>>>.<<<.           # To
<<.
>>>>>.>.<<<.         # The
<<<.
>>>>>>>>>.<<<<.<<<.>>>>>>.<<<<<. # Store
<<<.
>>>>>>>>>>>>.<<.>>>>>>>>.       # And
<<<<<.
<<<<<<<<<<<<.>>>>>>>>>>>>>>>>>>>>.<<. # Buy
<<<<<<.
<<<<.<<<<<<<.>>>>>>>>>>>>>>>>>>.<<<<<<<<<<<<<<<<<. # Some
>>>>>>>>>>.
>>>>>>>.<<<<<<<<<<<<<<<<<<.>>>>>>.<<<<<. # More
>>>>>>>>>>>.
<.
<<<<<<<<<<<<<<..  # 99
>.
>.>.>>>..>>.<<<<.>>>>>>. # Bottles
<<<<<<<<<.
>>.>>.  # Of
<<<<.
>.>>..>>>>>. # Beer
<<<<<<<<.
>>.>>>>>>>>. # On
>>>.
<<<<<<<<.>.<<<. # The
<<<.
>>>>>>>>>>>.>.<<<<<.. # Wall
>>>>>>>>.    # Stop
>.   # Newline x2

산출:

여기서 직접 시도하십시오!
URL이 너무 길어서 여기에 포함 할 수 없으므로 직접 복사 / 붙여 넣기해야합니다.

이 인터프리터를 사용하여 테스트했습니다 .


4

PHP, 251 바이트

이것은 복수 / 단수 문제를 설명합니다.

<?php for($i=99;$i>0;$i--){$b=" of beer";$s=" bottles$b";$r=" bottle$b";$w=" on the wall";$h=$i-1;echo$h>=1?"$i$s$w, $i$s.\nTake one down and pass it around, $h".($h<2?$r:$s)."$w.\n\n":"$i$r$w, $i$r. \nGo to the store and buy some more, 99$s$w.\n\n";}

읽을 수있는 :

for ($i=99; $i > 0; $i--) {
  $b = " of beer";
  $s = " bottles$b";
  $r = " bottle$b";
  $w = " on the wall";
  $h = $i - 1;
  echo $h >= 1 ? "$i$s$w, $i$s.\nTake one down and pass it around, $h" . ($h<2 ? $r : $s) . "$w.\n\n" : "$i$r$w, $i$r. \nGo to the store and buy some more, 99$s$w. \n\n";
}



4

, 1141 1109 바이트

나는 아직도 모든 빈 공간에 골프 더 이것에 많은 공간을 가지고 있지만 그것은 따라 휴식이 아주 쉽게 그것은 내가 이것에 대한 게시 된 것과 매우 유사 :) 정말 열심히 점점 질문 이 가게에 간다 제외하고, 맥주가 1에 도달하기 전에 매개 변수에 사용 된 셀이 이동되었습니다. 또한 레이아웃을 상당히 변경했습니다. 레이아웃을 몇 개 더 시도하면 설명을 해보겠습니다.

P'P''''>`++++++)++'''P>`+++++++++++++)'''''''''''P+++++++++++++`P```>`++\ v@@++++++++++L(`<@+p'''''''''PL<
v``P''(++++++`<P'''''''''(++++++++`<L```P'+++++P'+++P'++++++P'++++P''''(/> p++@---@``p@'''''p+++@`> `)''' 'p-@''p\
>''p:'p@'p@'\>n'   >`>`)'''p@''''p@\>n'''p@''''p@-@````p@'''''p@`>`)'''''/v  `P+p``@p'''(`<@-p''''''''P'+up(`<`@@/
^/``@@p'@p''/ >'''\ /-p'@p'@p``@p``/`>-'P''''''''p+@>`)''p`n`L++++++++++@S 'p@````p@````p@'''''p@`p@````p@'''''p@```p++@---@``p@'''''p-@+@`p@+++@``p-@``p@'p-@'''p-@```p++@`p@'p@''''p+@++++@`````p@'''''p-@`p@--@``p-@``p@''''p--@p@+++@``p-@''''p-@>`)'''p@'p+:`p@'p@'''p@'p@@``p@`p-@'''p-@`>`)'''p@''''p@``p@``p@'p@'p-@@'''p--@`>`)'''p@''''p@-@````p@'''''p@`>`)'''''p++@---@``p@'''''p+++@`>`)''''p-@''p@@'''p+@H
^\p@`p-@```p`//'''/ \@@'''p--@`>`)'p/``````@pS@++++++++++L`<vP+p`P-p`P-p`@ p'''(`<@-p''''@--p``@-p`@+p'@p`@--p''''@-p'@p`````@p'''@+++p''@p```\
^             \'p-@/v               \ p-@''p-@`p-@``p@''''p@ -@``p-@``p@'p ++@'''p@'p+++@`p-@````p@'p-@'''p-@```p++@`p@''''p+@```p-@''''p-@@``/
^                   <                                       <             <

스택의 코드에서 그것을 시도 여기


4

PHP, 250 246 244 233 228 바이트

나는 이것이 지금까지 가장 작다고 생각합니다. 이것은 247 샷을 기반으로하며 추가 최소화를 위해 일부 수정되었습니다.

최소화

<?php $b=99;function x($n){return"$n bottle".($n-1?'s':'')." of beer";}$y=" on the wall";while($b){$c=x($b);echo"$c$y, $c.\n",--$b?"Take one down and pass it around":"Go to the store and buy some more",", ".x($b?:99)."$y.\n\n";}

넓히는

<?php

$b=99;
function x($n){return"$n bottle".($n-1?'s':'')." of beer";}
$y=" on the wall";
while(b){
    $c=x($b);
    echo"$c$y, $c.\n",--$b?"Take one down and pass it around":"Go to the store and buy some more",", ".x($b?:99)."$y.\n\n";
}

1
php -r동등 perl -e하거나 유사한 명령 행에서 PHP를 실행할 수 있으므로 여는 태그를 생략해도됩니다. 코드 태그 대신 PHP 실행-r 의 관련 토론을 참조하십시오 .
manatwork

아, @manatwork에게 고마워요. 그러면 제가 좀 더 내 것으로 내려갈 수있을 것 같아요.
Phroggyy

while($b)잘 작동합니다.
frnhr

그러나 마지막에는 추가 줄 바꿈이 있습니다.
frnhr

모든 제안에 감사드립니다! 그러나 개행은 구절 사이에 줄이 있어야합니다
Phroggyy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.