99 flaskor öl

Låten
"99 flaskor".
Genre Folk

" 99 flaskor öl " eller " 100 flaskor pop på väggen " är en låt från mitten av 1900-talet. Det är en traditionell omvänd räkningslåt i både USA och Kanada. Det är populärt att sjunga på roadtrips, då det har ett väldigt repetitivt format som är lätt att memorera och kan ta lång tid när familjer sjunger. I synnerhet sjungs sången ofta av barn på långa skolbussresor , som klassresor eller på scout- eller flickguideutflykter .

Text

Låtens texter är som följer, med matematiska värden ersatta:

(n) flaskor öl på väggen. n) Flaskor öl. Ta ner en, skicka runt den, (n-1) flaskor öl på väggen. (varning: den här matematiska formeln slutar med n=1, låten använder inte negativa tal).

Sheet music for the vocals of "99 Bottles of Beer"

Alternativ linje:

Om en av dessa flaskor skulle råka falla, 98 flaskor öl på väggen...

Samma vers upprepas, varje gång med en flaska färre, tills det inte finns någon kvar. Variationer på den sista versen efter den sista flaskan som går ner inkluderar rader som:


Inga fler flaskor öl på väggen, inga fler flaskor öl. Gå till butiken och köp lite till, 99 flaskor öl på väggen...

Eller:


Inga fler flaskor öl på väggen, inga fler flaskor öl. Vi har tagit ner dem och skickat dem runt; nu är vi fulla och svimmade!

Andra alternativa rader lyder:

Om den där flaskan skulle råka falla, vilket slöseri med alkohol!

Eller:


Inga fler flaskor öl på väggen, inga fler flaskor öl. Det finns inget annat att falla, för det finns inga fler flaskor öl på väggen.

Eller:

Låten stannar inte vid de sista "1" eller "0" flaskorna öl utan fortsätter att räkna med −1 (negativ en) Flaskor öl på väggen Ta ner en, skicka runt den, −2 (negativ 2) flaskor med öl på väggen... fortsätter vidare genom de negativa siffrorna

Andy Kaufman rutin

Den tråkiga och tidskrävande karaktären hos "99 Bottles of Beer"-låten gör att förmodligen bara en minoritet av tolkningarna görs till slutversen. [ citat behövs ] Den amerikanske komikern Andy Kaufman utnyttjade detta faktum i rutinen tidigt i sin karriär när han faktiskt skulle sjunga alla 100 verserna.

Atticus

Atticus , ett band från Knoxville, Tennessee spelade in en tretton och en halv minuters liveversion av låten i sin helhet på en klubb i Glasgow, Skottland som heter The Cathouse . Den ingick i albumet Figment från 2001 . Rich Stewart alias Barroom Rambler listade den som nummer ett av dryckeslåten av 86 i en artikel för Modern Drunkard Magazine året därpå.

Matematiskt inspirerade varianter

Donald Byrd har samlat dussintals varianter inspirerade av matematiska begrepp och skrivna av honom själv och andra. (En delmängd av hans samling har publicerats.) Byrd hävdar att samlingen har såväl pedagogiskt som nöjesvärde. Bland hans varianter är:

  • "Infinity flaskor öl på väggen". Om en flaska tas ner finns det fortfarande oändliga flaskor med öl på väggen (vilket skapar en oändlig sekvens ungefär som " The Song That Never Ends") .
    • "Aleph-nullflaskor öl på väggen". Aleph-null är storleken på mängden av alla naturliga tal , och är den minsta oändligheten och den enda räknebara ; därför, även om ett oändligt antal flaskor faller, kvarstår samma mängd.
    • "Aleph-one/två/tre/etc. flaskor öl på väggen". Aleph-one, two, three, etc. är oräkneliga oändliga mängder, som är större än countable; därför, om bara en räknebar oändlighet av flaskor faller, återstår ett oräkneligt antal.

Andra versioner i Byrds samling involverar begrepp inklusive geometriska progressioner , differentialer , Eulers identitet , komplexa tal , summeringsnotation , Cantor-uppsättningen , Fibonacci-sekvensen och kontinuumhypotesen , bland andra.

Referenser inom datavetenskap

Datavetaren Donald Knuth bevisade att låten har en komplexitet av i sin in-joke -artikel " The Complexity of Songs" .

Det finns många datorprogram för att mata ut texten till sången. Detta är analogt med "Hej, värld!" program , med tillägg av en loop . Som med "Hello World!", kan detta vara en övningsövning för dem som studerar datorprogrammering, och en demonstration av olika programmeringsparadigm som hanterar looping-konstruktioner och syntaktiska skillnader mellan programmeringsspråk inom ett paradigm.

Programmet har skrivits på över 1 500 olika programmeringsspråk.

Exempel

Klassisk BASIC- syntax

       
     
    
  FÖR  Flaska  =  99  TILL  1  STEG  -1  SKRIV UT  STR  (  Flaska  )  +  " flaskor öl på väggen "  +  STR  (  Flaska  )  +  " flaskor öl"  SKRIV UT  "Ta ner en och skicka runt den, "  +  STR  (  Flaska  -1  )  +  "flaskor öl på väggen"  NÄSTA  Flaska 

C++

 

 

            
    
                
                
    

      
 #include  <iostream>  int  main  ()  {  for  (  int  numberOfBottles  =  99  ;  numberOfBottles  >  1  ;  numberOfBottles  --  )  {  std  ::  cout  <<  numberOfBottles  << " flaskor   öl  på väggen, "  <<  numberOfBottles <<   " flaskor öl,  \n  "  ;  std  ::  cout  <<  "Ta ner en och skicka den, "  <<  numberOfBottles  -  1  <<  " flaskor öl på väggen,  \n\n  "  ;  }  std  ::  cout  <<  "1 flaska öl på väggen,  \n  Ta ner en och skicka runt den, inga flaskor öl på väggen!"  ;  } 

C#

        

	 
			   


 for  (  int  bottleNumber  =  99  ;  bottleNumber  >  1  ;  bottleNumber  --)  {  Console  .  WriteLine  (  $"{bottleNumber} flaskor öl på väggen, {bottleNumber} flaskor öl" ,  bottleNumber  )  ;  Konsol  .  WriteLine  (  $"Ta ner en och skicka runt den, {bottleNumber - 1} flaskor öl på väggen" )  ;  }  Konsol  .  WriteLine  (  "1 flaska öl på väggen, 1 flaska öl" )  ;  Konsol  .  WriteLine  (  "Ta ner en och skicka runt den, inga flaskor öl på väggen" )  ; 

PHP



        
     
          


 
  <?php  for  (  $flaskor  =  99  ;  $flaskor  >  1  ;  $flaskor  --  )  {  echo  "  $flaskor  flaskor öl på väggen,  $flaskor  flaskor öl.<br>"  ;  echo  "Ta ner en, skicka den runt",  .  $flaskor  -  1  "flaskor öl på väggen.<br>"  ;  }  echo  "1 flaska öl på väggen, 1 flaska öl.<br>"  ;  echo  "Ta ner en, skicka runt den, ingen mer öl på väggen."  ; 

Pytonorm

     
    
      

 för  flaskor  inom  intervallet  (  99  ,  1  ,  -  1  ):  skriv ut  (  f  '  {  flaskor  }  flaskor öl på väggen,  {  flaskor  }  flaskor öl.'  )  skriv  ut (   f  'Ta ner en och skicka runt den,  {  flaskor  -  1  }  flaskor öl på väggen'  )  print  (  f  '1 flaska öl på väggen, 1 flaska öl.'  )  print  (  'Ta ner en och skicka runt den, inga fler flaskor öl på väggen! '  ) 

Java

  
	     
		        
			      
			
		
		
		
	
 public  class  Bottles  {  public  static  void  main  (  String  [ ]  args  )  {  for  (  int  numBottles  =  99  ;  numBottles  >  1  ;  numBottles  --  ) {  System  .  ut  .  println  (  numBottles  +  " flaskor öl på väggen, "  +  numBottles  +  " flaskor öl," )  ;  System  .  ut  .  println  (  "Ta ner en och skicka runt den,")  ;  }  System  .  ut  .  println  (  "1 flaska öl på väggen, 1 flaska öl" )  ;  System  .  ut  .  println  (  "Ta ner en och skicka runt den, inga flaskor öl på väggen" )  ;  }  } 

JavaScript

         
  
    



 for  (  låt  bottleNum  =  99  ;  bottleNum  >  1  ;  bottleNum  -  )  {  console  .  log (  `  $  {  bottleNum  }  flaskor öl på väggen,  ${  bottleNum  }  flaskor öl.` )  ;  konsol  .  log  (  `Ta ner en, skicka runt den,  ${  bottleNum  -  1  }  flaskor öl på väggen.` )  ;  }  konsolen  .  log (  "  1 flaska öl på väggen, 1 flaska öl." )  ;  konsol  .  log  (  "Ta ner en, skicka den runt, ingen mer öl på väggen!")  ; 

Repa

ställ in (flaskor) till (99) upprepa tills <(flaskor) = 1> säg (join(flaskor)(join( flaskor öl på väggen, )(join(flaskor)( flaskor öl.))) för (4 ) sekunder säg (join(Ta en down, pass it around, )(join((flaskor) - (1))( flaskor öl på väggen!)) i (4) sekunder säg (1 flaska öl på väggen) , 1 flaska öl) i (4) sekunder säg (Ta ner en och skicka runt den, inga fler flaskor öl på väggen!) i (4) sekunder

Se även