"बीयर की 99 बोतलें"


71

एक प्रोग्राम लिखें जो कि लिरिक्स को 99 बोतल बीयर में आउटपुट करता है, जितना संभव हो उतने बाइट्स में

बोल:

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 के आउटपुट से अलग है। इन भाषाओं में लिखे गए किसी भी उत्तर को हटा दिया जाएगा।

जैसा कि यह एक कैटलॉग चुनौती है, यह इसके लिए सबसे छोटे समाधान के साथ भाषा खोजने के बारे में नहीं है (कुछ ऐसे हैं जहां खाली कार्यक्रम चाल करता है) - यह हर भाषा में सबसे छोटा समाधान खोजने के बारे में है। इसलिए, कोई जवाब स्वीकार के रूप में चिह्नित नहीं किया जाएगा।

सूची

इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से सूची बनाता है) क) प्रति भाषा में सबसे छोटे समाधान की सूची के रूप में और बी) एक समग्र लीडरबोर्ड के रूप में।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई देता है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

## 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
जो किसी ने इसे बंद कर दिया, वह दूसरा एक लोकप्रियता प्रतियोगिता है ...
15:18 पर TheDoctor


4
@ C @O'Bʀɪᴇɴ मैंने अभी तक इसे VTCd नहीं किया है, फिर भी यह तय करना कि मैं इसके बारे में कैसा महसूस करता हूं। किसी भी तरह से, मुझे लगता है कि दूसरे से कुछ जवाब (या उनसे स्निपेट्स) सीधे प्रतिस्पर्धी रहते हुए कॉपी / पेस्ट किए जा सकते हैं , जो कि ड्यूप-नेस के लिए एक सामान्य परीक्षण है।
15

13
ध्यान दें कि क्वार्टरटा ने कई हफ्तों पहले ही 99BB कैटलॉग को सैंडबॉक्स किया था और इसे पोस्ट करने की योजना बना रहा था।
एलेक्स ए।

13
@GamrCorps कृपया चुनौती शुरू होने के बाद नियमों में अनावश्यक बदलाव न करें। आउटपुट में कोई भी वर्ण वैकल्पिक नहीं होना चाहिए।
फेरेसम

जवाबों:


43

सी #, 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
2 बाइट्स " bottle"एक प्रारूप तर्क के साथ बदलने से हालांकि मुझे यकीन है कि एक बेहतर तरीका है, बोतल के 3 उदाहरणों से मेरी आंखें
दुखती हैं

4
b==1से बदला जा सकता है b<2
लीजनमोनमाल 978

2
आपके लूप के लिए इस तरह लिखा जा सकता हैfor(int b = 100; b--> 1;)
यिसन हज

2
फिर शायद हमें चुनौती देने वाले लेखक की प्रतीक्षा करनी चाहिए ताकि यह तय किया जा सके कि एक अनुगामी न्यूलाइन की अनुमति है या नहीं।
फ्लोरियन बाख

31

मोटोरोला MC14500B मशीन कोड , 46612 बाइट्स

लंबाई कारणों से, मैं यहां कार्यक्रम पोस्ट नहीं कर सकता। हालांकि, यह यहां हेक्साडेसिमल में पाया जा सकता है , और यहां बाइनरी में ( 0एस के साथ गद्देदार )।


यह मोटोरोला MC14500B मशीन कोड में सबसे कम संभव कार्यक्रम है। यह केवल के होते हैं 1000और 1001( 8और 9क्रमशः,); आउटपुट के प्रत्येक बिट के लिए एक ओपकोड।

इसमें 93,224 हाफ-बाइट ऑपकोड का उपयोग किया गया है, और गाने के बोल को एक बार में थोड़ा सा आउटपुट करता है। यह एकमात्र संभव आउटपुट विधि है।

रुचि रखने वालों के लिए, आउटपुट # 3 (16 में से), I / O पिन जाता है।


व्याख्या

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

रजिस्टर शुरू होता है 0


कोड ट्रिविया

  • हेक्साडेसिमल 93,224 है 8और 9लंबे समय से है।

  • द्विआधारी 745,792 है 1और 0लंबे समय से है।

  • मैंने कोड जनरेट करने के लिए नीचे पायथन 2 कोड का उपयोग किया। 0बाइनरी के लिए इनपुट और 1हेक्साडेसिमल के लिए।

    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
कृपया मुझे बताएं कि आपने बिना किसी प्रकार के स्ट्रिंग जनरेटर के यह सब नहीं लिखा है ...: सी
एडिसन क्रम्प

1
नया "कोड ट्रिविया" अनुभाग देखें: P @VoteToClose
Zach Gates

लिंक टूट गए हैं :(
ETHproductions 15

घर वापस आने पर मैं इसे ठीक कर दूंगा। इसके बारे में क्षमा करें): @ETHproductions
Zach गेट्स

28

विटसी, 0 बाइट्स



गंभीरता से मुझ पर 'कुछ नहीं मिला। (@ मैं बहुत माफी चाहता हूँ?))

इसे ऑनलाइन आज़माएं! (बस "रन" हिट)


7
O_o मुझे सिम्पलेक्स के लिए शून्य बाइट्स में करने के लिए कुछ दिलचस्प चाहिए: पी
कॉनर ओ'ब्रायन

4
@ C @O'Bʀɪᴇɴ मुझे लगता है कि आपका मतलब है, "मुझे जीरो बाइट्स में सिम्पलेक्स के लिए कुछ उपयोगी चाहिए।"
मार्टिन एंडर

3
@VoteToClose - यह कैसे काम करता है? मुझे ईमानदारी से पता नहीं है, मैं एक कोड गोल्फर नहीं हूं, लेकिन मुझे यहां आने और लोगों और भाषाओं को देखकर आनंद आता है। लेकिन मैं इसे समझ नहीं सकता। +1 क्योंकि यह प्रभावशाली दिखता है!
जॉनी

1
@Jonnny दुभाषिया के फ़ाइल हैंडलर को देखने के लिए यहां क्लिक करें। फ़ाइल हैंडलर देखेंगे कि किसी फ़ाइल में शून्य बाइट्स हैं, और यदि ऐसा है, तो गीत का प्रिंट आउट लें। c:
Addison Crump

1
@ जॉनी हाँ - यह एक कार्य प्रगति पर है, एक दिन, यह गंभीर रूप से बेहतर होगा। लेकिन अभी के लिए ... हम इंतजार करते हैं। यदि आप एक अच्छी गोल्फिंग भाषा चाहते हैं, तो सीरियसली उत्तर देखें, इसमें कुछ क्रेजी चीजें मिली हैं।
Addison Crump

27

गंभीरता से , 1 बाइट

N

यदि स्टैक खाली है (जो कि शुरुआत में है), Nगीत को धक्का देता है। फिर वे EOF पर स्पष्ट रूप से मुद्रित होते हैं।

गंभीर रूप से दुभाषिया ठीक करने के लिए @Mego का धन्यवाद।


22
हैलो वर्ल्ड चैलेंज में मार्टिन ने कहा, "> कृपया उन भाषाओं में उबाऊ (लेकिन मान्य) उत्तर न दें जहां गोल्फ के लिए बहुत कुछ नहीं है - ये अभी भी इस सवाल के लिए उपयोगी हैं क्योंकि यह एक कैटलॉग को यथासंभव पूरा करने की कोशिश करता है। हालांकि, मुख्य रूप से उन भाषाओं में जवाब देते हैं जहां लेखकों को वास्तव में कोडिंग में प्रयास करना पड़ता था। " यह उत्तर निर्बाध है, लेकिन यह एक मान्य और सबसे छोटा समाधान है।
ग्रिटोसिस्ट

1
प्रश्न पढ़ते समय मैं आपको एक गंभीर उत्तर पोस्ट करते हुए देखने का इंतजार नहीं कर सकता था। लेकिन ऐसा लग रहा है कि मुझे भी इंतजार नहीं करना पड़ेगा। :)
Hexaholic

8
Seriusly ????????
वजुरा

1
मैं के उपयोग के बिना अपने समाधान देखने के लिए उत्सुक N:)
Mego

1
हाँ - मेरे पास चार वोट हैं और मेरा जवाब वैध है। मैं यहाँ शीर्ष टिप्पणी में कही गई बातों से सहमत हूँ।
Addison Crump

19

जावास्क्रिप्ट ईएस 6, 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()+'.')

बस अभी भी साफ और समझ में रखते हुए कुछ बाइट्स trimming।

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+".")
जेनेरिक यूजर

यह वह नहीं है जो आपके कोड में उन 2 बाइट्स को बचा रहा है। यह वास्तव में चारों ओर कोष्ठक को हटाने (--x <1) है। अभी के लिए, मैं पठनीय उद्देश्यों के लिए कथन के अंदर चर को उन सभी को एक साथ रखने के लिए छोड़ दूँगा।
एडम डेल

1
@Stefnotch यदि आप सोच रहे हैं, तो मैंने अपने फंक्शन कॉल्स की जांच करके इसे संपादित पाया ... लेकिन मुझे नहीं लगता कि यह आपका इरादा था। आपकी सलाह अभी भी एक अंतिम उपाय के रूप में प्रासंगिक है, हालांकि।
एडम डेली

1
@ पाओलो एबरमैन यह प्रत्येक कविता के लिए अलर्ट निष्पादित करता है, लेकिन आप इसे कंसोल में निष्पादित करने के लिए कंसोल.लॉग में बदलने के लिए स्वतंत्र हैं, जो इसे 194 बाइट्स बना देगा। इसके अलावा पूरे गीत को एक बार में फायरफॉक्स में काम नहीं करने से कम से कम ... यह एक अच्छा 5-10 छंदों को छोड़ देता है।
एडम डेली

1
@Stefnotch। वैसे यह 1-x इस समय उपयोगी साबित हो रहा है।
एडम डेली

18

जावास्क्रिप्ट ईएस 6, 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 कला को दूसरी साइट से कॉपी क्यों किया जाता है?
19

7
खासकर जब से यह काम नहीं करता है, यह अलर्ट करता है:,+No, on the wall,,. Go to the store and buy some more, 99 bottles of beer on the wall.
सामान्य उपयोगकर्ता

14

सी, 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 बाइट्स हैं, इसलिए जब तक किसी को महत्वपूर्ण ओवरहेड के बिना स्ट्रिंग्स के कुछ हिस्सों को संपीड़ित या पुन: उपयोग करने का तरीका नहीं मिल जाता है, तब तक यह एक कठिन निचली सीमा का प्रतिनिधित्व करता है। मुझे संदेह है कि आप सामान्य रूप से दृष्टिकोण की सीमा तक पहुँच गए होंगे, साथ ही कुछ बाइट्स घटा सकते हैं।
रे

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

Ungolfed

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
जे एटकिन

@JAtkin धन्यवाद। पहले एक के लिए यह ठीक है, आउटपुट समान रहता है। लेकिन दूसरे के लिए, अगर मैं बदलाव करता हूं, तो अंतिम पंक्ति प्रिंट होगी 99 bottleऔर नहीं99 bottles
यसिन हज

1
जैसा कि यह पता चला है, यह जावा के लिए अच्छा है, लेकिन यह ग्रूवी (213 बनाम 245 बाइट्स) के लिए अच्छी तरह से काम नहीं करता है।
जे एटकिन

1
वास्तव में नहीं, groovy JVM भाषाओं में से एक है। Fo अधिकांश एप्लिकेशन groovy कोड जावा कोड से कम है जो समान कार्य करता है। goovy-lang.org
J Atkin

1
@BenjaminUrquhart महान! इसे संशोधित!
यसिन हज्ज

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

अब, हम कुछ उपयोगी तार को हटा देंगे:

  • > करने के लिए decompresses bottles of beer
  • ^ करने के लिए decompresses bottles of beer on the wall
  • !करने के लिए decompresses ^,, जहां ^एक ऊपर है।
  • $डिकम्प्रेस करता है >.\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

विम, 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

यह गोल्फिंग कमांडों पर मेरा पहला प्रयास है, हालांकि स्पष्ट रूप से यह काफी लोकप्रिय है । मैंने 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 इस सुधार के साथ एनागोल पर 153 तक पहुंचना संभव है
xsot

@xsot समझ में आ गया;)
Primo

8

जावास्क्रिप्ट ईएस 6, 237 217 208 203 195 193 189 186 बाइट्स

यह इस गोल्फ के लिए बहुत मुश्किल हो रहा है ...
1 संपादित करें: किसी ने मुझे पूरी तरह से outgolfed, ऐसा लगता है कि अगर मुझे सबसे अच्छा जावास्क्रिप्ट उत्तर देना है तो मुझे कठिन प्रयास करना होगा।
संपादित करें 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

वर्तमान में, एक और उल्लेखनीय जावास्क्रिप्ट का उत्तर है: "बीयर की 99 बोतलें" । इसकी जांच - पड़ताल करें! : डी


मैं आपकी शर्तों की फिर से जांच करूंगा और आपको एक युगल बाइट्स को ट्रिम करने में सक्षम होना चाहिए। अच्छा प्रयास रखते हुए, हालांकि!
एडम डेली

@AadDally ओके !! : D लेकिन मुझे अन्य लोगों के सामान की नकल करना पसंद नहीं है ... (अगर मैं सिर्फ आपके कोड की नकल करूं तो मुझे दोषी लगेगा ... हालांकि यह "स्वीकार्य" होगा, अगर मुझे कुछ सुधार मिले): D
स्टेफ्नोच

@AadDally याय, मैंने अपने कार्यों के साथ खिलवाड़ किया और मैंने काफी बाइट्स बचाए! (पार की गई रेखा लंबी और लंबी होती जा रही है ..)
स्टीफनोट

अति उत्कृष्ट! जब तक कुछ वैकल्पिक रास्ता नहीं है, मैंने पूरी तरह से अनदेखी की है मुझे लगता है कि हम दोनों अंत के करीब हैं।
एडम डैली

7

जावास्क्रिप्ट ईएस 6, 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)

यह मेरे सी सबमिशन का एक कच्चा अनुवाद है। मुझे वास्तव में जावास्क्रिप्ट पता नहीं है इसलिए सुधार के लिए निश्चित रूप से जगह है।

संपादित करें: नीट, मैंने बैकटिक्स की खोज की


आप के console.logसाथ प्रतिस्थापित alertकर सकते हैं और आप इसके स्थान पर `का उपयोग कर सकते हैं"। फिर आप एक नई पंक्ति के साथ \ n बदल सकते हैं। (टेंक का उपयोग टेम्पलेट स्ट्रिंग्स के लिए किया जाता है, उन तारों में नई रेखाएँ हो सकती हैं ...) इसके अलावा, मुझे पिटाई के लिए बधाई!
स्टेफनोच

1
मुझे लगता है कि मैं अकेले आउटपुट छोड़ दूंगा जब तक कि कोई और मुझे हरा न दे जैसा console.logकि परीक्षण के लिए आसान है। वैसे भी, मुझे backticks के लिए उजागर करने के लिए धन्यवाद!
xsot

वोहू, तुम्हारा बहिर्गमन! साथ ही, उपयोग करने के लिए धन्यवाद || आपके कोड में, यह निश्चित रूप से काम में आया ... (मेह, आप बदल सकते हैं console.log, और मेरी जीत कुछ भी नहीं कम हो जाएगी .. XD)
स्टीफनोट

1
आप साथ रखने के लिए चुनौतीपूर्ण साबित हो रहे हैं! काश, आपके कोड का टूटना दिलचस्प होता।
एडम डेली

1
@ एडमडली मूल रूप से, प्रत्येक कविता को निम्न संरचना के साथ 3 भागों में विभाजित किया गया है %d bottle%s of beer%s%s:। प्रत्येक कविता के सूचकांक (बोतलों की संख्या) की गणना की जाती है, i/3|0जबकि प्रत्येक स्थानापन्न का सूचकांक बस होता है i%3
xsot

7

ब्रेनफक, 743 बाइट्स

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

इसे ऑनलाइन आज़माएं!

उपरोक्त कुछ निर्देशों को सहेजने के लिए कुछ स्थानों पर रैपिंग सेल का उपयोग करता है। मैंने 755 निर्देशों में एक गैर-रैपिंग संस्करण भी बनाया है ।


असम्पीडित

निम्नलिखित ब्रेनफॉक एनोटेशन भाषा में एक बहुभुज है

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

यह थोड़ा ज्यादा है ...

जबकि लैब्रिंथ प्रिंटिंग स्ट्रिंग्स पर विशेष रूप से अच्छा नहीं है (क्योंकि आपको सभी वर्ण कोडों को आगे बढ़ाने की आवश्यकता है), मुझे लगता है कि यह अधिक लेकिन छोटी लंबी लाइनों का उपयोग करके और ग्रिड रोटेशन के साथ भी क्रेज़ियर होने से बेहतर करना संभव है।

जैसा कि मुझे लगता है कि कोई भी गोल्फ सुधार इस कोड की संरचना को काफी हद तक बदल देगा, मैं एक स्पष्टीकरण के साथ इंतजार करूंगा जब तक मैं विचारों से बाहर नहीं हो जाता कि इसे कैसे आगे बढ़ाऊं।


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

Sp3000 के उत्तरi/2 से विचार लिया ।


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 में प्रिंट करता है।

ग्लेन हे के लिए धन्यवाद 14 बाइट्स सहेजे गए!


1
इसके बजाय (n>1?" bottles":" bottle")" of beer", उपयोग करें " bottle""s"^(n>1)*" of beer"- ध्यान दें कि इसके *बाद आवश्यक है (n<1)क्योंकि अन्यथा यह (n>1)" of beer"शक्ति के रूप में लागू करने की कोशिश करता है । इसके अलावा, वहाँ का उपयोग कर के लिए किसी भी लाभ है while n>0से अधिक for n=99:-1:1(जो अंत में हालत सरल होने की अनुमति देता है, और के लिए अलग से जरूरत से बचा जाता है n=99)?
ग्लेन ओ

इसके अलावा वास्तविक न्यूलाइन्स का उपयोग करें \nऔर बीच के हिस्से को प्रक्षेपित करने के लिए (बजाय ",n>1?...",", उपयोग करें $(n>1?...")) एक चरित्र को बचाने के लिए और , अगले भाग से पहले सशर्त अंदर ले जाएं , इसलिए इसे केवल एक बार लिखा जाना चाहिए।
Glen O

दरअसल, ओवर के लिए सुझाव पर हड़ताल करें - मुझे सिर्फ यह एहसास हुआ कि आपको प्रत्येक कविता में अंतिम संख्या करते समय एक को घटाना होगा, इसलिए कोई शुद्ध लाभ नहीं है।
Glen O

@GlenO महान सुझावों के लिए हमेशा की तरह धन्यवाद!
एलेक्स ए।

1
मैं सिर्फ एक बदलाव का सुझाव देने में सक्षम होने की उम्मीद कर रहा था - यह थोड़ा मूर्खतापूर्ण है कि यह उस विकल्प को अनुमति नहीं देता है यदि आपको मूल उत्तरदाता की स्वीकृति के बिना संपादन करने के लिए पर्याप्त प्रतिनिधि मिला है। मैं माफी माँगता हूँ अगर मैं किसी भी तरह से यह करने के लिए पैर की उंगलियों पर कदम रखा। मैंने "बीयर के बोतल" के मूल्यांकन को अंत में भाग दिया, इसलिए इसे केवल एक बार करने की आवश्यकता है, और इसे आरंभ करें। मैंने थोड़ा बचाने के लिए एक सशर्त "एस" के बजाय एक बैकस्पेस का उपयोग किया।
ग्लेन ओ

5

जावास्क्रिप्ट ईएस 6, 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)
}

@ कमेंट्स: एरो फ़ंक्शंस के विचार के लिए धन्यवाद, 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
मुझे चलाने के लिए कोड नहीं मिल रहा है, आप किस ब्राउज़र / पर्यावरण का उपयोग कर रहे हैं? "वाक्यविन्यास: लापता; कथन से पहले" इसके अलावा, तीर के कार्यों पर एक नज़र है!
स्टीफनोट

मुझे सिंटैक्स त्रुटि खोजने के लिए एक क्षण लिया +o'क्योंकि यह तब बदल गया था +o+'। लूप को बदलने और उत्तर देने का अवसर भी देखा। अब तीर के कार्यों की जाँच की जाएगी :)
18aMan

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 144 137 137 बाइट्स

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

उपरोक्त हेक्सडंप के साथ उलटा हो सकता है xxd -rCJam दुभाषिया में इसे ऑनलाइन आज़माएं ।

कुल 143 बाइट्स के लिए 9 अतिरिक्त बाइट्स की कीमत पर , हम अनपेक्षित वर्णों से बच सकते हैं:

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 ? दिलचस्प।
21

बेस 256 में कैरिज रिटर्न था, जो ऑनलाइन दुभाषिया के साथ काम नहीं करता है। सौभाग्य से, बेस 259 आईएसओ 8559-1 रेंज के बाहर कोई वर्ण नहीं बनाता है।
डेनिस

मैंने मान लिया कि सीजेएम कम से कम 2 बाइट्स गोल्फस्क्रिप्ट से कम होगा - लगभग तुच्छ रूप से। हालांकि 137 की उम्मीद नहीं थी!
प्रिमो

1
@primo निष्पक्ष होने के लिए, अधिकांश बचत आधार रूपांतरण से होती है। अफसोस की बात है, baseपहले से ही दो बार का उपयोग करके गोल्फस्क्रिप्ट में 8 बाइट्स जोड़ते हैं ...
डेनिस

5

सी, 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, "....
ग्लेन रैंडर्स-पियर्सन

@ GlennRanders-Pehrson धन्यवाद। मैंने मुख्य () से पहले लाइनब्रेक भी हटा दिया था।
फायरफ्रॉएडफ़ेल्ड

5

गोल्फस्क्रिप्ट, 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
बस 12 बाइट्स द्वारा एनागोल गोल्फस्क्रिप्ट रिकॉर्ड में सुधार हुआ ।
प्रिमो

5

गणितज्ञ, 238 226 222 224 बाइट्स

मार्टिन ब्यूटनर को धन्यवाद देने के लिए कई बाइट्स बचाए।

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

ब्रेनफक, 4028 बाइट्स

यह काफी छुपा हुआ है। नकल के बहुत सारे, और बहुत अक्षम, इसलिए यह कोई पुरस्कार नहीं जीतेगा। हालांकि, मैंने इसे शुरू किया, और इसे खत्म करने के लिए दृढ़ था।

मैं कोशिश कर सकता हूं और इसे सुधार सकता हूं, लेकिन शायद अभ्यस्त नहीं, क्योंकि स्पष्ट रूप से, मेरा मस्तिष्क गड़बड़ है।

golfed

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

Ungolfed

# 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 चला सकते हैं php -rजिसके साथ perl -eसमान और समान है, उद्घाटन टैग को छोड़ना स्वीकार्य है। कोड टैग के बजाय रनिंग PHP-r में संबंधित चर्चा देखें ।
मैनटवर्क

आह, धन्यवाद @manatwork, मुझे लगता है कि फिर मैं थोड़ा और नीचे मेरा मिल सकता है।
फ्रॉग्गी

while($b)साथ ही काम करता है।
प्रात

हालांकि अंत में एक अतिरिक्त नई लाइन है।
फर्नहर

पूरे सुझाव के लिए धन्यवाद! हालांकि, छंद के बीच एक पंक्ति होने के लिए नई पंक्ति की आवश्यकता है
फीरोग्गी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.