; Here is the Macintosh WordPerfect macro language version. Assign (Var01;99) Repeat Type Var (Var01) Type ( bottles of beer on the wall. ) Type Var (Var01) Type ( bottles of beer. ) Type (Take one down, pass it around. ) Assign (Var01;Var01-1) Type Var (Var01) Type ( bottles of beer on the wall.) Hard Return Until (Var01=0)
(* Modula-2 version of 99 Bottles of Beer *) (* Tested on a VAX 7700 running OpenVMS *) (* Programmer: Jeremy Rule rulej@tempest.adsnet.net *) MODULE BottlesOfBeer; FROM InOut IMPORT WriteCard, WriteString, WriteLn; CONST BOTTLES = 99; VAR counter : CARDINAL; BEGIN counter := BOTTLES; REPEAT WriteCard( counter,2 ); WriteString(" bottles of beer on the wall, "); WriteCard( counter,2 ); WriteString(" bottles of beer."); WriteLn; WriteString(" Take one down, and pass it around, "); DEC( counter ); WriteCard( counter,2 ); WriteString(" bottles of beer on the wall."); WriteLn; UNTIL ( counter = 1 ); WriteString("1 bottle of beer on the wall, 1 bottle of beer"); WriteLn; WriteString("Take it down and pass it around, "); WriteString("No more bottles of beer on the wall."); WriteLn; END BottlesOfBeer.
MODULE BottlesOfBeer EXPORTS Main; FROM IO IMPORT Put ; FROM Fmt IMPORT Int ; VAR bottles := 99 ; BEGIN WHILE (bottles > 0) DO Put(Int(bottles) & " bottle(s) of beer on the wall,\n") ; Put(Int(bottles) & " bottle(s) of beer. \n") ; Put("Take one down, and pass it around,\n"); DEC(bottles); Put(Int(bottles) & " bottle(s) of beer on the wall.\n"); END ; END BottlesOfBeer.
// beersong.c // an implementation in the LPC language // Tim Hollebeek, 6/6/95 - tim@debusy.Princeton.EDU private string bottles(int n) { switch (n) { case 0: return "no more bottles of beer"; case 1: return "1 bottle of beer"; default: return n + " bottles of beer"; } } void beersong() { for (int i = 99; i; i--) { write(bottles(i) + " on the wall, " + bottles(i) + ", take one down, pass it around, " + bottles(i - 1) + " on the wall.\n"); } }
; The following is a single line of code beer ; Randy M. Hayman (haymanr@icefog.alaska.edu) for i=99:-1:1 w !,i," bottle",$S(i=1:"",1:"s")," of beer on the wa ll, ",i," bottle",$S(i=1:"",1:"s")," of beer.",!,"Take one down, pass it a round, ",i-1," bottle",$S(i=2:"",1:"s")," of beer on the wall.",!
#!/usr/local/bin/itcl_sh # [incr Tcl] version of "99 bottles of beer" # Author: Steven Grady # grady@xcf.berkeley.edu itcl_class bottle { constructor {config} { incr numBottles } destructor { incr numBottles -1 } method drink {} { puts "Take one down, pass it around," $this delete } proc numBottleStr {} { switch $numBottles { 0 { return "No more bottles of beer" } 1 { return "1 bottle of beer" } default { return "$numBottles bottles of beer" } } } proc numBottles {} { return $numBottles } common numBottles 0 } proc createBottles {numBottles} { for {set i 0} {$i < $numBottles} {incr i} { bottle #auto } } createBottles 99 foreach b [itcl_info objects -class bottle] { set str [bottle :: numBottleStr] puts "$str on the wall, $str" $b drink puts "[bottle :: numBottleStr] on the wall." }
# by Ozan S. Yigit" (oz@sni.ca) # define(BOTTLES,`ifelse($1, 0, no more bottles, $1, 1, one bottle, $1 bottles) of beer') dnl define(BEER,`ifelse(eval($1 > 0), 1, `BOTTLES($1) on the wall, BOTTLES($1) take one down, pass it around BOTTLES(eval($1 - 1)) on the wall. BEER(eval($1 - 1))')') dnl BEER(10)
// java version of 99 bottles of beer on the wall // 1995 Sean Russell (ser@cs.uoregon.edu) class bottles { public static void main(String args[]) { String s = "s"; for (int beers=99; beers>-1;) { System.out.print(beers + " bottle" + s + " of beer on the wall, "); System.out.println(beers + " bottle" + s + " of beer, "); if (beers==0) { System.out.print("Go to the store, buy some more, "); System.out.println("99 bottles of beer on the wall.\n"); System.exit(0); } else System.out.print("Take one down, pass it around, "); s = (--beers == 1)?"":"s"; System.out.println(beers + " bottle" + s + " of beer on the wall.\n"); } } }
/** * 99 Bottles of Beer on the Wall in JavaScript * This program prints out the lyrics of an old pub song. * Copyright (C) 1996, Brian Patrick Lee (blee@media-lab.mit.edu) */ if (confirm("Are you old enough to read about beer\n" + "according to your local community standards?")) { for (i = 99 ; i > 0 ; i--) { j = i - 1; if (i != 1) { icase = "bottles"; } else { icase = "bottle"; } if (j != 1) { jcase = "bottles"; } else { jcase = "bottle"; } document.writeln(i + " " + icase + " of beer on the wall,"); document.writeln(i + " " + icase + " of beer,"); document.writeln("Take 1 down, pass it around,"); if (j != 0) { document.writeln(j + " " + jcase + " of beer on the wall."); } else { document.writeln("No more bottles of beer on the wall!"); } document.writeln() } } else { document.write("You might want think about moving to another community.") }
PLEASE DO ,10 <- #1 PLEASE DO ,10SUB#1 <- #176 PLEASE DO ,11 <- #30 PLEASE DO ,11SUB#1 <- #76 DO ,11SUB#2 <- #190 DO ,11SUB#3 <- #80 DO ,11SUB#4 <- #200 PLEASE DO ,11SUB#5 <- #256 DO ,11SUB#6 <- #248 DO ,11SUB#7 <- #144 DO ,11SUB#8 <- #216 PLEASE DO ,11SUB#9 <- #202 DO ,11SUB#10 <- #14 DO ,11SUB#11 <- #144 DO ,11SUB#12 <- #98 PLEASE DO ,11SUB#13 <- #190 DO ,11SUB#14 <- #160 DO ,11SUB#15 <- #256 DO ,11SUB#16 <- #88 PLEASE DO ,11SUB#17 <- #74 DO ,11SUB#18 <- #14 DO ,11SUB#19 <- #128 DO ,11SUB#20 <- #114 PLEASE DO ,11SUB#21 <- #214 DO ,11SUB#22 <- #24 DO ,11SUB#23 <- #112 DO ,11SUB#24 <- #162 PLEASE DO ,11SUB#25 <- #22 DO ,11SUB#26 <- #104 DO ,11SUB#27 <- #80 DO ,11SUB#28 <- #256 PLEASE DO ,11SUB#29 <- #2 DO ,11SUB#30 <- #228 PLEASE DO ,12 <- #49 PLEASE DO ,12SUB#1 <- #76 DO ,12SUB#2 <- #190 DO ,12SUB#3 <- #80 DO ,12SUB#4 <- #200 PLEASE DO ,12SUB#5 <- #256 DO ,12SUB#6 <- #248 DO ,12SUB#7 <- #144 DO ,12SUB#8 <- #216 PLEASE DO ,12SUB#9 <- #202 DO ,12SUB#10 <- #14 DO ,12SUB#11 <- #144 DO ,12SUB#12 <- #98 PLEASE DO ,12SUB#13 <- #190 DO ,12SUB#14 <- #160 DO ,12SUB#15 <- #256 DO ,12SUB#16 <- #88 PLEASE DO ,12SUB#17 <- #218 DO ,12SUB#18 <- #36 DO ,12SUB#19 <- #38 DO ,12SUB#20 <- #164 PLEASE DO ,12SUB#21 <- #176 DO ,12SUB#22 <- #48 DO ,12SUB#23 <- #162 DO ,12SUB#24 <- #14 PLEASE DO ,12SUB#25 <- #128 DO ,12SUB#26 <- #208 DO ,12SUB#27 <- #162 DO ,12SUB#28 <- #222 PLEASE DO ,12SUB#29 <- #48 DO ,12SUB#30 <- #8 DO ,12SUB#31 <- #120 DO ,12SUB#32 <- #66 PLEASE DO ,12SUB#33 <- #48 DO ,12SUB#34 <- #246 DO ,12SUB#35 <- #136 DO ,12SUB#36 <- #184 PLEASE DO ,12SUB#37 <- #256 DO ,12SUB#38 <- #202 DO ,12SUB#39 <- #110 DO ,12SUB#40 <- #104 PLEASE DO ,12SUB#41 <- #42 DO ,12SUB#42 <- #126 DO ,12SUB#43 <- #56 DO ,12SUB#44 <- #88 PLEASE DO ,12SUB#45 <- #72 DO ,12SUB#46 <- #56 DO ,12SUB#47 <- #80 DO ,12SUB#48 <- #242 PLEASE DO ,12SUB#49 <- #228 PLEASE DO ,13 <- #31 PLEASE DO ,13SUB#1 <- #76 DO ,13SUB#2 <- #190 DO ,13SUB#3 <- #80 DO ,13SUB#4 <- #200 PLEASE DO ,13SUB#5 <- #256 DO ,13SUB#6 <- #248 DO ,13SUB#7 <- #144 DO ,13SUB#8 <- #216 PLEASE DO ,13SUB#9 <- #202 DO ,13SUB#10 <- #14 DO ,13SUB#11 <- #144 DO ,13SUB#12 <- #98 PLEASE DO ,13SUB#13 <- #190 DO ,13SUB#14 <- #160 DO ,13SUB#15 <- #256 DO ,13SUB#16 <- #88 PLEASE DO ,13SUB#17 <- #74 DO ,13SUB#18 <- #14 DO ,13SUB#19 <- #128 DO ,13SUB#20 <- #114 PLEASE DO ,13SUB#21 <- #214 DO ,13SUB#22 <- #24 DO ,13SUB#23 <- #112 DO ,13SUB#24 <- #162 PLEASE DO ,13SUB#25 <- #22 DO ,13SUB#26 <- #104 DO ,13SUB#27 <- #80 DO ,13SUB#28 <- #256 PLEASE DO ,13SUB#29 <- #194 DO ,13SUB#30 <- #36 DO ,13SUB#31 <- #256 PLEASE DO ,20 <- #10 PLEASE DO ,20 SUB #1 <- #76 DO ,20 SUB #2 <- #196 DO ,20 SUB #3 <- #4 DO ,20 SUB #4 <- #132 PLEASE DO ,20 SUB #5 <- #36 DO ,20 SUB #6 <- #164 DO ,20 SUB #7 <- #228 DO ,20 SUB #8 <- #100 PLEASE DO ,20 SUB #9 <- #52 DO ,20 SUB #10 <- #180 PLEASE DO ,21 <- #10 BY #10 PLEASE DO ,21SUB#1#1 <- #248 PLEASE DO ,21SUB#1#2 <- #120 PLEASE DO ,21SUB#1#3 <- #184 PLEASE DO ,21SUB#1#4 <- #56 PLEASE DO ,21SUB#1#5 <- #216 PLEASE DO ,21SUB#1#6 <- #88 PLEASE DO ,21SUB#1#7 <- #152 PLEASE DO ,21SUB#1#8 <- #24 PLEASE DO ,21SUB#1#9 <- #232 PLEASE DO ,21SUB#1#10 <- #104 DO ,21SUB#2#1 <- #128 DO ,21SUB#2#2 <- #256 DO ,21SUB#2#3 <- #64 DO ,21SUB#2#4 <- #192 DO ,21SUB#2#5 <- #96 DO ,21SUB#2#6 <- #224 DO ,21SUB#2#7 <- #32 DO ,21SUB#2#8 <- #160 DO ,21SUB#2#9 <- #112 DO ,21SUB#2#10 <- #240 DO ,21SUB#3#1 <- #64 DO ,21SUB#3#2 <- #192 DO ,21SUB#3#3 <- #256 DO ,21SUB#3#4 <- #128 DO ,21SUB#3#5 <- #32 DO ,21SUB#3#6 <- #160 DO ,21SUB#3#7 <- #224 DO ,21SUB#3#8 <- #96 DO ,21SUB#3#9 <- #48 DO ,21SUB#3#10 <- #176 DO ,21SUB#4#1 <- #192 DO ,21SUB#4#2 <- #64 DO ,21SUB#4#3 <- #128 DO ,21SUB#4#4 <- #256 DO ,21SUB#4#5 <- #160 DO ,21SUB#4#6 <- #32 DO ,21SUB#4#7 <- #96 DO ,21SUB#4#8 <- #224 DO ,21SUB#4#9 <- #176 DO ,21SUB#4#10 <- #48 PLEASE DO ,21SUB#5#1 <- #32 PLEASE DO ,21SUB#5#2 <- #160 PLEASE DO ,21SUB#5#3 <- #224 PLEASE DO ,21SUB#5#4 <- #96 PLEASE DO ,21SUB#5#5 <- #256 PLEASE DO ,21SUB#5#6 <- #128 PLEASE DO ,21SUB#5#7 <- #192 PLEASE DO ,21SUB#5#8 <- #64 PLEASE DO ,21SUB#5#9 <- #16 PLEASE DO ,21SUB#5#10 <- #144 DO ,21SUB#6#1 <- #160 DO ,21SUB#6#2 <- #32 DO ,21SUB#6#3 <- #96 DO ,21SUB#6#4 <- #224 DO ,21SUB#6#5 <- #128 DO ,21SUB#6#6 <- #256 DO ,21SUB#6#7 <- #64 DO ,21SUB#6#8 <- #192 DO ,21SUB#6#9 <- #144 DO ,21SUB#6#10 <- #16 DO ,21SUB#7#1 <- #96 DO ,21SUB#7#2 <- #224 DO ,21SUB#7#3 <- #32 DO ,21SUB#7#4 <- #160 DO ,21SUB#7#5 <- #64 DO ,21SUB#7#6 <- #192 DO ,21SUB#7#7 <- #256 DO ,21SUB#7#8 <- #128 DO ,21SUB#7#9 <- #80 DO ,21SUB#7#10 <- #208 DO ,21SUB#8#1 <- #224 DO ,21SUB#8#2 <- #96 DO ,21SUB#8#3 <- #160 DO ,21SUB#8#4 <- #32 DO ,21SUB#8#5 <- #192 DO ,21SUB#8#6 <- #64 DO ,21SUB#8#7 <- #128 DO ,21SUB#8#8 <- #256 DO ,21SUB#8#9 <- #208 DO ,21SUB#8#10 <- #80 PLEASE DO ,21SUB#9#1 <- #16 PLEASE DO ,21SUB#9#2 <- #144 PLEASE DO ,21SUB#9#3 <- #208 PLEASE DO ,21SUB#9#4 <- #80 PLEASE DO ,21SUB#9#5 <- #240 PLEASE DO ,21SUB#9#6 <- #112 PLEASE DO ,21SUB#9#7 <- #176 PLEASE DO ,21SUB#9#8 <- #48 PLEASE DO ,21SUB#9#9 <- #256 PLEASE DO ,21SUB#9#10 <- #128 DO ,21SUB#10#1 <- #144 DO ,21SUB#10#2 <- #16 DO ,21SUB#10#3 <- #80 DO ,21SUB#10#4 <- #208 DO ,21SUB#10#5 <- #112 DO ,21SUB#10#6 <- #240 DO ,21SUB#10#7 <- #48 DO ,21SUB#10#8 <- #176 DO ,21SUB#10#9 <- #128 DO ,21SUB#10#10 <- #256 PLEASE DO ,22 <- #10 PLEASE DO ,22 SUB #1 <- #8 DO ,22 SUB #2 <- #136 DO ,22 SUB #3 <- #72 DO ,22 SUB #4 <- #200 PLEASE DO ,22 SUB #5 <- #40 DO ,22 SUB #6 <- #168 DO ,22 SUB #7 <- #104 DO ,22 SUB #8 <- #232 PLEASE DO ,22 SUB #9 <- #24 DO ,22 SUB #10 <- #152 DO .10 <- #9 DO .11 <- #9 PLEASE DO ,10 <- #1 PLEASE DO ,10SUB#1 <- #176 DO READ OUT ,10 DO COME FROM (999) DO (500) NEXT PLEASE DO ,11SUB#1 <- .5 DO READ OUT ,11 DO (500) NEXT DO ,12SUB#1 <- .5 PLEASE DO READ OUT ,12 PLEASE DO .6 <- '?"!10~.10'~#1"$#1'~#3 DO (50) NEXT PLEASE DO .7 <- '?"!11~.11'~#1"$#1'~#3 DO (70) NEXT DO .2 <- #1 DO .1 <- .11 PLEASE DO (1010) NEXT DO .11 <- .3 DO (600) NEXT DO (101) NEXT (70) DO (71) NEXT DO .11 <- #9 DO .2 <- #1 PLEASE DO .1 <- .10 DO (1010) NEXT DO .10 <- .3 DO (600) NEXT DO (101) NEXT (71) DO RESUME .7 (50) DO (51) NEXT PLEASE DO FORGET #1 DO .2 <- #1 DO .1 <- .11 PLEASE DO (1010) NEXT DO .11 <- .3 DO (600) NEXT PLEASE DO .7 <- '?"!11~.11'~#1"$#1'~#3 DO (80) NEXT DO (101) NEXT (80) DO (81) NEXT DO GIVE UP (81) DO RESUME .7 (51) DO RESUME .6 (101) DO FORGET #1 (999) DO FORGET #1 (600) DO (500) NEXT DO ,13SUB#1 <- .5 DO READ OUT ,13 DO RESUME #1 (500) DO ,30 <- #1 DO .1 <- .10 DO (1020) NEXT PLEASE DO ,30SUB#1 <- ,20SUB.1 DO READ OUT ,30 DO .3 <- .1 DO .1 <- .11 DO (1020) NEXT PLEASE DO ,30SUB#1 <- ,21SUB .3 .1 DO READ OUT ,30 DO .5 <- ,22SUB.1 PLEASE DO RESUME #1
# Scott E Gilbert <scott@cs.arizona.edu> procedure main() t:= table("bottles") t[1]:= "bottle" every n:= 100 to 1 by -1 do { write(n, " ", t[n], " of beer on the wall.\n", n, " ", t[n], " of beer.\n", "Take one down, Pass it around.\n", n-1, " ", t[n-1], " of beer on the wall.\n" ) } end
% MATLAB verion of 99 Bottles of beer % by Bill Becker function beer(n); if nargin<1, n=99; end for i=n:-1:1, disp([int2str(i) ' Bottles of beer on the wall,']) disp([int2str(i) ' Bottles of beer,']) disp('Take one down and pass it around,') if i>1, disp([int2str(i-1) ' Bottles of beer on the wall.']),end end disp('No more bottles of beer on the wall!')Here is a version contributed that shows the language in its more "native" form. (Cf. C++)
% MATLAB *vectorized* version of "99 bottles of beer" % Rich Stein (rich@cs.umbc.edu) bottles = [98:-1:3]; % bottles 98 to 3 (99, 2 & 1 are treated as special case) lines = 3; % need the number of bottles at the beginning of 3 lines num_array = ones(lines,1) * bottles; % bottles is a (1x96) array format_plural1 = '%d bottles of beer on the wall,\n%d bottles of beer,\n'; format_plural2 = 'Take one down, pass it around,\n%d bottles of beer on the wall.\n\n'; format_sing1 = '%d bottle of beer on the wall,\n%d bottle of beer,\n'; format_sing2 = 'Take one down, pass it around,\n%d bottle of beer on the wall.\n\n'; format_none2 = 'Take it down, pass it around,\nNo bottles of beer on the wall.\n'; % bottles 99, 2 & 1 are treated as special cases fprintf([format_plural1 format_plural2], 99,99,num_array,2) fprintf([format_plural1 format_sing2], 2,2,1) fprintf([format_sing1 format_none2], 1,1)
Sub MAIN REM "99 bottles of beer on the wall" REM Microsoft Word WordBasic macro language version REM written by Mark Pilgrim, f8dy@netaxs.com FileNew beer$ = "99" bottle$ = " bottles " For count = 99 To 1 Step - 1 Insert beer$ + bottle$ + "of beer on the wall," InsertPara Insert beer$ + bottle$ + "of beer," InsertPara Insert "Take " If count > 1 Then Insert "one" Else Insert "it" End If Insert " down, pass it around," InsertPara If count > 1 Then beer$ = Str$(count - 1) beer$ = Right$(beer$, Len(beer$) - 1) If count = 2 Then bottle$ = " bottle " Insert beer$ + bottle$ + "of beer on the wall." InsertPara Else Insert "No more bottles of beer on the wall." End If InsertPara Next End Sub
(* Mathematica version of 99 Bottles of Beer *) (* Bill Dall *) Do[If[i>1, Print[i, " more bottles of beer on the wall. ",i, " more bottles of beer."]; Print["Take one down, pass it around."], (* else *) Print["1 more bottle of beer on the wall. 1 more bottle of beer."]; Print["Take one down, pass it around."]; Print["No more bottles of beer on the wall."] ], (* If *) {i,99,1,-1}]
; by Augusto Chioccariello to 99bottles for [i 99 1 -1] [ print se :i [bottle(s) of beer on the wall] print se :i [bottle(s) of beer] print [take one down, pass it around] print se (:i - 1) [bottle(s) of beer on the wall]] end
\ Mops Beer (object paradigm) \ by Bruce Bennett :class BEER super{ object } record{ var n } private :m lastBottle: cr ." 1 last bottle of beer on the wall," cr ." Only 1 bottle of beer." cr ." Take it down, pass it around --" cr ." No more bottles of beer!" cr ;m public :m bottlesOf: { n -- } 1 n DO i 1 = IF lastBottle: self LEAVE THEN cr i . ." bottles of beer on the wall," cr i . ." bottles of beer." cr ." Take one down, pass it around," cr i 2 = IF i 1 - . ." last bottle of beer." ELSE i 1 - . ." bottles of beer on the wall." THEN cr -1 +LOOP ;m ;class beer beer! 99 bottlesOf: beer!
!rem 99 bottles of beer in the M5 macro language !rem programmer Ron Franke-Polz - ronaldFP@aol.com !rem !rem define a macro which contains the song !rem !macro song [v $1] [if [eq $1 1] "bottle" "bottles"] of beer on the wall, [v $1] [if [eq $1 1] "bottle" "bottles"] of beer, take one down and pass it around, [if [eq [- $1 1] 1] "No more" [- $1 1]] [if [eq [- $1 1] 1] "bottle" "bottles"] of beer on the wall. !endm !rem !rem sing the song 99 times !rem !eval [set count 99] !while count !song (count) !eval [-- count] !endwhile
alias bottles.start { while (1) { @ bottles.count = 99; while ( bottles.count ) { bottles.sayonwall , bottles.say echo Take one down and pass it around @ bottles.count = bottles.count - 1 bottles.sayonwall . echo } echo No more bottles of beer on the wall, echo no more bottles of beer, echo Go to the store and buy some more, echo 99 bottles of beer on the wall. echo } } alias bottles.sayonwall echo $bottles.count bottles of beer on the wall$0 alias bottles.say echo $bottles.count bottles of beer, bottles.start
%% LIFE version of 99 Bottles of beer %% by Denys Duchier duchier@cs.sfu.ca how_many(0) -> "no more". how_many(N) -> N. action(0) -> 99 | write("Go to the store and buy some more.\n"). action(N) -> N-1 | write("Take one down, pass it around.\n"). bottles(1) -> "bottle". bottles(N) -> "bottles". sing(N) :- write(H:how_many(N)," ",B:bottles(N)," of beer on the wall, ", H," ",B," of beer.\n"), write(how_many(M:action(N))," ",bottles(M), " of beer on the wall.\n\n"), sing(M).
# # # quick effort at 99 bottles program using gnu make # # the file must be called makefile.bottles # # Author: Andrew Dunstan (andrew.dunstan@its.maynick.com.au) # default: $(MAKE) -f makefile.bottles BOTTLES=99 bottles .SILENT: bottles: echo $(BOTTLES) bottles of beer on the wall echo $(BOTTLES) of beer echo Take one down and pass it around ifeq ($(BOTTLES),0) echo No bottles of beer on the wall else echo `expr $(BOTTLES) - 1` bottles of beer on the wall echo $(MAKE) -f makefile.bottles BOTTLES=`expr $(BOTTLES) - 1` bottles endif
# # Vanilla (non-graphical) version of 99 Bottles as sung # reluctantly by Maple V3, and only under the agreement that it # will be called on to perform the song properly, in color, and with # appropriate animation... someday # # Authors: Hill and Burstall (handb@ionet.net) # lyrics:=(` Bottle`,` of beer on the wall! ` ,` of beer! Take`, ` down, pass it around...`): for i from 99 by -1 to 3 do print(cat ( i ,lyrics[1],`s`,lyrics[2]), cat(i, lyrics[1],`s`,lyrics[3],` one`,lyrics[4]), cat(i-1,lyrics[1],`s`,lyrics[2])) od; print(cat ( i ,lyrics[1],`s`,lyrics[2]), cat(i, lyrics[1],`s`,lyrics[3],` one`, lyrics[4]), cat(i-1,lyrics[1],lyrics[2])); print(cat ( `1` ,lyrics[1],lyrics[2]), cat(`1`, lyrics[1],lyrics[3],` it`, lyrics[4]), cat(`0`,lyrics[1],`s`,lyrics[2]));
(* ML version of 99 bottles of beer *) (* - Using pattern of functions parameters *) (* and Recursion(like other functional programming langauges) *) (* Written by Jong-Won Choi(jwchoi@gsen.goldstar.co.kr) *) (* Nov 13, 95 *) fun NinetyNineBottlesOfBeer(0) = print("\n No more bottles of beer on the wall\n") | NinetyNineBottlesOfBeer(1) = (print("\n 1 bottle of beer on the wall, 1 bottle of beer."); print("\n Take one down and pass it around."); NinetyNineBottlesOfBeer(0)) | NinetyNineBottlesOfBeer(NumberOfBottles:int) = (print("\n "); print(NumberOfBottles); print(" bottle of beer on the wall, "); print(NumberOfBottles); print(" bottle of beer."); print("\n Take one down and pass it around."); NinetyNineBottlesOfBeer(NumberOfBottles - 1));
% file: beer.m % author: Fergus Henderson <fjh@cs.mu.oz.au> % date: Thursday 9th November 1995 :- module beer. :- interface. :- import_module io. :- pred main(io__state::di, io__state::uo) is det. :- implementation. :- import_module int. main --> beer(99). :- pred beer(int::in, io__state::di, io__state::uo) is det. beer(N) --> ( { N = 0 } -> io__write_string("Go to the store and buy some more!") ; bottles(N), io__write_string(" on the wall,\n"), bottles(N), io__write_string(".\n"), io__write_string("Take one down, pass it around,\n"), { N1 is N - 1 }, bottles(N1), io__write_string(" on the wall.\n\n"), beer(N1) ). :- pred bottles(int::in, io__state::di, io__state::uo) is det. bottles(N) --> ( { N = 0 } -> io__write_string("No more bottles of beer") ; { N = 1 } -> io__write_string("1 bottle of beer") ; io__write_int(N), io__write_string(" bottles of beer") ).
-- Lingo version of 99 Bottles of Beer -- programmer: John R. Nyquist SynapseDes@aol.com on BottlesOfNABeer -- This handler outputs to the message window. set maxBottles to 99 repeat with bottles = maxBottles down to 1 set bottleString to WhichString(bottles) put bottleString & " of beer on the wall, " & bottleString & " of beer." put "Take one down, pass it around," put WhichString(bottles - 1) & " of beer on the wall." put RETURN end repeat put "No bottles of beer on the wall, no bottles of beer." put "Go to the store and buy some more." put maxBottles & " bottles of beer on the wall." end BottlesOfNABeer on WhichString bottles if bottles > 1 then return bottles & " bottles" else if bottles = 1 then return "1 bottle" else return "No more bottles" end if end WhichString
! --------------------------------------------------------------------------- ! 99 Bottles of Beer on the Wall, Inform version [smaller] ! _ ! Torbjorn Andersson, (d91tan@Minsk.DoCS.UU.SE) December 1995 ! --------------------------------------------------------------------------- ! For technical reasons, the first function is not allowed to use local ! variables. Global i = 99; [ Main; print "^^^^"; while (i > 0) { new_line; print i, (char) ' ', (PluralBottle) i, " of beer on the wall,^"; print (Chorus) i--; print "You take one down & pass it around^"; print (Chorus) i; } @read_char 1 i; quit; ]; [ PluralBottle n; if (n == 1) print "bottle"; else print "bottles"; ]; [ Chorus n; print " "; if (n == 0) print "No more"; else print n; print_ret (char) ' ', (PluralBottle) n, " of beer"; ]; end;
! ----------------------------------------------------------------------------- ! 99 Bottles of Beer on the Wall, Inform 6 version. ! ! Torbjörn Andersson, (d91tan@Student.DoCS.UU.SE), August 1997 ! ----------------------------------------------------------------------------- Constant NUM_BOTTLES 99; Object wall private bottles_left, with init [ n; self.bottles_left = n; ], bottle_name [; if (self.bottles_left == 1) return "bottle"; return "bottles"; ], bottle_count [; return self.bottles_left; ], take_one_down [; self.bottles_left--; ]; [ Main; wall.init(NUM_BOTTLES); while (wall.bottle_count() > 0) { print "^", wall.bottle_count(), " ", (string) wall.bottle_name(), " of beer on the wall,^ ", wall.bottle_count(), " ", (string) wall.bottle_name(), " of beer^You take one down and pass it around^ "; wall.take_one_down(); if (wall.bottle_count() == 0) print "No more"; else print wall.bottle_count(); print " ", (string) wall.bottle_name(), " of beer on the wall.^"; } ];
; The Bottles of Beer song (c) 1996 Eric Korpela (korpela@ssl.berkeley.edu) ; USAGE: BOTTLES or BOTTLES, NUMBER ; pro bottles, number ; if not(keyword_set(number)) then begin number=99 print,'BOTTLES: Defaulting to 99 bottles!' endif ; ; Set up our song structure............ st1=replicate({n0:0,s1:' bottles of beer on the wall.', $ n1:0,s2:' bottles of beer.', $ s3:'You take one down and pass it around.', $ n2:0,s4:' bottles of beer on the wall.'}, number) ; ; put in the appropriate numbers i=(number-1)-indgen(number) st1(*).n0=i+1 st1(*).n1=i+1 st1(*).n2=i ; print,st1,format='(i3,a/i3,a/a/i3,a//)' ; end
; MAGIC/L version of the beer bottle song ; (c) 1996 Eric Korpela (korpela@ssl.berkeley.edu) ; WARNING! All the spaces are necessary! ; ; Add the help entry.... .subject bottles Usage: bottles ( number ) . ; and here's the procedure define bottles integer number local integer current ; current := number while ( current > 1 ) print current , " bottles of beer on the wall." print current , " bottles of beer." print "You take one down and pass it around." current := current - 1 print current , " bottles of beer on the wall." print repeat ; print 1 , " bottle of beer on the wall." print 1 , " bottle of beer." print "You take one down and pass it around." print "No bottles of beer on the wall. end
<html> <head> <title> 99 Bottles of Beer: The Compleat Lyrics </title> </head> <body> ;;; ;;; The actual source code to The Compleat Lyrics. <defsubst plural whitespace=delete> <if <not <eq %0 1>> s> </defsubst> <set-var beers=99> <while <gt beers 0>> <get-var beers> bottle<plural beers> of beer on the wall, <br> <get-var beers> bottle<plural beers> of beer, <br> You take one down, pass it around, <br> <decrement beers> <get-var beers> bottle<plural beers> of beer on the wall. <p> </while> No more bottles of beer on the wall, <br> No more bottles of beer, <br> Go to the store, and buy some more, <br> <form method=GET action="<get-var mhtml::current-url>"> <input type="submit" name="button" value="99 Bottles of beer on the wall"> </form> </body> </html>
A bunch of drunk engineers(#54326) Owner: eric.korpela Key: eric.korpela(#54351PeoZ) Money: 2 You see a bunch of engineers from a south bay firm who look like they've had a bit too much to drink. They are random walking all over town, stopping where ever they can find approprate beverages. I bet they'd sing "99 bottles of beer" if you asked them to. Listen: *sing*99* Ahear: use me; @wait 3={ @while gt(V(vi),1)={ @if eq(V(vj),V(vi))=think,{@trigger me/vy;@decrement me/vj} }; @wait DONE=:collapses into an algoholic stupor. } VY: say concat(V(vi),bottles of beer on the wall!); say concat(V(vi),bottles of beer.); say You take one down, and pass it around; @decrement me/vi; say concat(V(vi),bottles of beer on the wall.); @emit Ause: @vi me=99;@vj me=100 Ouse: takes a deep breath and begins to sing. Scent: They smell of 43 different types of liquor. Functions: #69
******************************************* * KUIP version of 99 bottles of beer * * r.p.hofmann f15rph@ips105.desy.de * * http://ips105.desy.de:8765/ * ******************************************* * about KUIP: * * R.Brun, P.Zanarini * * KUIP - Kit for a User Interface Package * * Program library I202. CERN 1988 * ******************************************* macro beer nbott=99 ndown=1 if [ndown] > 0 goto ndok ndown=-[ndown] ndok: if [ndown] > 1 goto mored alias/create pron it goto oned mored: alias/create pron them oned: if [nbott] < 1 goto end if [nbott] = 1 goto one alias/create bob 'bottles of beer' alias/create otw 'on the wall' pass: mess [nbott] bob otw mess [nbott] bob mess take [ndown] down and pass pron all around nbott=[nbott]-[ndown] if [nbott] <> 1 goto moreb mess 1 bottle of beer otw goto oneb moreb: mess [nbott] bob otw oneb: if [ndown] = 0 goto end if [nbott] > 1 goto pass if [nbott] < 1 goto end one: mess 1 bottle of beer otw mess 1 bottle of beer mess take [ndown] down and pass pron all around nbott=1-[ndown] mess [nbott] bottles of beer otw if [nbott] < 1 goto end end:
@args #230:"@99" none none none @chmod #230:@99 rxd @program #230:@99 "Programmed by Malcolm Gin-Hopwood y Silva (perigee@dgsys.com)"; "Runs on LambdaMOO core 1.7.9 and 1.8.0"; "This one spares any standers by the terror of 99 bottles of beer on the wall, and does numbers to english passing as well. Woo woo."; count = 99; while (count > 0) $command_utils:suspend_if_needed(0); this:_round_of_beer(count); count = count - 1; endwhile player:tell("Time to buy more beer."); . @args #230:"_round_of_beer" this none this @program #230:_round_of_beer beer = args[1]; player:tell(($string_utils:capitalize($string_utils:english_number(beer)) + ((beer == 1) ? " bottle " | " bottles ")) + "of beer on the wall."); player:tell(($string_utils:capitalize($string_utils:english_number(beer)) + ((beer == 1) ? " bottle " | " bottles ")) + "of beer..."); player:tell("Take one down and pass it around."); player:tell(($string_utils:capitalize($string_utils:english_number(beer - 1)) + (((beer - 1) == 1) ? " bottle " | " bottles ")) + "of beer on the wall."); player:tell(); .
BEER RCDUMMYFD S U S T R BEER RFSUBFILE SM4SUBF1 BEER ERDATE BEER AA BEER AA Michael Passer BEER AA BEER AA This program requires one dummy record of input BEER AA (the M4OLD DD) to trigger execution. Output is BEER AA sent to the first subfile (M4SUBF1 DD). BEER AA BEER TFBOTTLESZ 3Z 100 BEER AA ----+----1----+- BEER TFBOB 15C BOTTLES OF BEER BEER TFOTW 11C ON THE WALL BEER TFTOD 13C TAKE ONE DOWN BEER TFPIA 14C PASS IT AROUND BEER TFCOMMA 1C , BEER TFPERIOD 1C . BEER TFBLANK 1C BEER PR GO SUB SING SING ERDATE S 100 SING PR TBOTTLESZEQD0 SING PR GS RETURN SING PR GO SUB CHORUS SING PR R TMINUS1Z TBOTTLESZ SING PR GO REQUEST SING CHORUS ERDATE S CHORUS TFMINUS1Z 3Z CHORUS TFBOTTLES 3C CHORUS TFMINUS1 2C CHORUS PR TBOTTLESZ- D1 TMINUS1Z CHORUS PR R TBOTTLESZ TBOTTLES CHORUS PR R TMINUS1Z TMINUS1 CHORUS E1 NR SUBFILE V CHORUS R1 TBOTTLES CHORUS R1 TBLANK CHORUS R1 TBOB CHORUS R1 TBLANK CHORUS R1 TOTW CHORUS R1 TCOMMA CHORUS E2 NR SUBFILE V CHORUS R2 TBOTTLES CHORUS R2 TBLANK CHORUS R2 TBOB CHORUS R2 TCOMMA CHORUS E3 NR SUBFILE V CHORUS R3 TTOD CHORUS R3 TCOMMA CHORUS R3 TBLANK CHORUS R3 TPIA CHORUS R3 TCOMMA CHORUS E4 NR SUBFILE V CHORUS R4 TMINUS1 CHORUS R4 TBLANK CHORUS R4 TBOB CHORUS R4 TBLANK CHORUS R4 TOTW CHORUS R4 TPERIOD CHORUS E5 NR SUBFILE V CHORUS R5 TBLANK
; Code Begin ; A.Brunet@frcl.bull.fr (Alain Brunet) (defun beer(cap) (dotimes (i cap) (print (- cap i) " bottle" (if (= i (- cap 1)) "" "s") " of beer on the wall.") (print "Take one down, pass it around.\n") ) (print "Time to buy more beer !") ) (beer 99)
#!/bin/ksh # Korn shell version of 99 Bottles # Dave Plonka - plonka@carroll1.cc.edu typeset -i n=99 typeset bottles=bottles typeset no while (( n )) do print "${n?} ${bottles?} of beer on the wall," print "${n?} ${bottles?} of beer,\ntake one down, pass it around," n=n-1 case ${n?} in 0) no=no bottles=${bottles%s}s ;; 1) bottles=${bottles%s} ;; esac print "${no:-${n}} ${bottles?} of beer on the wall.\n" done exit
{ 99 bottles of beer, Leda version } { By Arion Lei (philipl@cs.ust.hk) } include "std.led"; const verse1 := " bottles of beer on the wall,\n"; verse2 := " bottles of beer. Take one down, pass it around,\n"; verse3 := " bottles of beer on the wall.\n"; verse4 := "No more bottles of beer on the wall, no more bottles of beer.\n"; verse5 := "Go to the store and buy some more... 99 bottles of beer.\n\n"; { ========== IMPERATIVE PROGRAMMING =========== } function proc_Beer (bottleTotal : integer); var bottleLeft : integer; begin bottleLeft := bottleTotal; while bottleLeft>0 do begin print(bottleLeft); print(verse1); print(bottleLeft); print(verse2); bottleLeft := bottleLeft - 1; if (bottleLeft>0) then begin print(bottleLeft); print(verse3); end; end; print(verse4); print(verse5); end; { proc_Beer } { ========== OBJECT-ORIENTED PROGRAMMING =========== } class Beers; var bottleLeft : integer; function more () -> boolean; begin return bottleLeft > 0; end; function consume1 (); begin print(bottleLeft); print(verse1); print(bottleLeft); print(verse2); bottleLeft := bottleLeft - 1; if (bottleLeft>0) then begin print(bottleLeft); print(verse3); end else begin print(verse4); print(verse5); end; end; end; { class Beers } function obj_Beer (bottleTotal : integer); var obeer : Beers; begin obeer := Beers(bottleTotal); while (obeer.more()) do obeer.consume1(); end; { obj_Beer } { ========== FUNCTIONAL PROGRAMMING =========== } function func_Beer (num : integer) -> function(); begin return function (); begin print(num); print(verse1); print(num); print(verse2); if num>1 then begin print(num-1); print(verse3); func_Beer(num-1)(); end else begin print(verse4); print(verse5); end; end; end; { func_Beer } { ========== LOGIC PROGRAMMING =========== } function log_Beer (bottleTotal : integer); function pickBottle (byRef left : integer, total : integer)->relation; begin if total = 0 then return false else return left <- total | pickBottle(left, total-1); end; function consume (i : integer)->relation; begin print(i); print(verse1); print(i); print(verse2); if i>1 then begin print(i-1); print(verse3); end else begin print(verse4); print(verse5); end; return true; end; var i : integer; begin for pickBottle(i, bottleTotal) & consume(i) do begin end; end; { log_Beer } { ---------- MAIN PROGRAM ---------- } var bottleTotal : integer; begin bottleTotal := 99; proc_Beer (bottleTotal); obj_Beer (bottleTotal); func_Beer(bottleTotal)(); log_Beer(bottleTotal); end;
implement BeerBottles; include "sys.m"; sys: Sys; include "draw.m"; draw: Draw; BeerBottles: module { init: fn(ctxt: ref Draw->Context, agv: list of string); }; init(ctxt: ref Draw->Context, argv: list of string) { sys = load Sys Sys->PATH; for (int bottles = 99; bottles > 0; bottles--) { sys->print("%d bottle(s) of beer on the wall,\n",bottles); sys->print("%d bottle(s) of beer.\n",bottles); sys->print("Take one down, pass it around,\n"); sys->print("%d bottle(s) of beer on the wall.\n\n"); } }
;-) Spellbinder Macro to print "99 Bottles of Beer on the Wall" (-; ; by Andy Goldberg ; :%A="s" ;set variable for plural :%1=99 ;initialize counter :%2=%1-1 ;decrement at top of loop s//%1 bottle%A of beer on the wall</ ;lyric s//%1 bottle%A of beer</< s//Take one down and pass it around</ :on %2-1 /+4 / /+1 ;check for last stanza :%A="" ;if last stanza clear plural s//%2 bottle%A of beer on the wall.<</ ;last line and blank line :%1=%1-1 ;check for end :on -1 /-9 ;if not end then loop s//No more bottles of beer on the wall.</ ;ending line /t/p/wo/song.txt/t/gd ;print, save and end (optional)
% MetaFont/MetaPost version of ``99 bottles'' by Tomasz J. Cholewo % For more information see http://cm.bell-labs.com/who/hobby/MetaPost.html for i:=99 downto 1: message decimal i & " bottle" if i>1: & "s" fi & " of beer on the wall,"; message decimal i & " bottle" if i>1: & "s" fi & " of beer."; message "Take one down, pass it around."; endfor; message "No more bottles of beer on the wall."; end
H* H* ILE RPG/400 - 99 Bottles of Beer on the Wall. H* (IBM AS/400 Midrange Platform) H* (Program Source BOTTLESR1) H* FBottlesS1 O E WorkStn C C Z-Add *HIVAL Bottles1 C C DoW Bottles1 > *Zero C Eval Bottles2 = Bottles1 C Write #Display C Sub 1 Bottles1 C EndDo C C Eval *InLR = *On C ----------------------- A* A* ILE RPG/400 - 99 Bottles of Beer on the Wall. A* (IBM AS/400 Midrange Platform) A* (Display File Source BOTTLESS1) A* A DSPSIZ(24 80 *DS3) A R #DISPLAY FRCDTA A A BOTTLES1 2Y 0O 4 2EDTCDE(4) A 4 5'Bottles of Beer On the Wall,' A BOTTLES2 2Y 0O 4 34EDTCDE(4) A 4 37'Bottles of Beer,' A 5 2'Take one down, pass it around.' A
; MPTMON (Multi Processor Test Monitor) is a debugging ; tool for telephonic exchanges from Alcatel. ; These two macros do the beer job.. REM MAC Bottle DEF MAC Bottle WR %0,' Bottle',& IF %0<>1\'s',& END ' of Beer',& IF %1\' on the Wall',& END '%2' EM REM MAC Beer DEF MAC Beer ; jr_31jan97 ADD SYM.I=99T BAS=T COU 99T Bottle:.I,TRUE,',' Bottle:.I,FALSE,'.' ' Take one down, pass it around,' .I=.I-1 Bottle:.I,TRUE,'.' '' END EM Beer:
*Model 204 (or M204 as it's commonly called) is a proprietary *database and language of Computer Corporation of America. *It was first developed over 30 years ago by the NSA. *Some claim that it's the fastest IBM Mainframe database. *It is good for databases with large record counts. *The Department of Social Security of Australian employs *hundreds of M204 programmers. *Add-on packages permit SQL and Web access. * * Written by Kevin Giles, NCI Information Systems Inc. * e-mail: KGILES@USGS.GOV * * 100 bottles of beer / take one / action * *LOWER BEGIN DECLARE %S IS STRING LEN 1 COMMON FOR %BOTTLE FROM 100 TO 0 BY -1 CALL CHECKPLURAL(%BOTTLE) PRINT %BOTTLE AND 'bottle' WITH %S AND 'of beer on the wall.' PRINT %BOTTLE AND 'bottle' WITH %S AND 'of beer.' PRINT 'Take one down, pass it around.' CALL CHECKPLURAL(%BOTTLE-1) IF %BOTTLE-1 = +0 THEN PRINT 'No bottles of beer on the wall.' SKIP 1 LINE PRINT 'No bottles of beer on the wall.' PRINT 'No bottles of beer.' PRINT 'Go to the store, buy some more.' %BOTTLE = 101 CALL CHECKPLURAL(%BOTTLE-1) END IF PRINT $UNBLANK(%BOTTLE-1) AND 'bottle' WITH %S AND - 'of beer on the wall.' SKIP 1 LINE END FOR SUBROUTINE CHECKPLURAL (%PASSVAL STRING DP 0 INPUT) IF %PASSVAL NE +1 THEN %S = 's' ELSE %S = '' END IF END SUBROUTINE END
|| 99 bottles of beer in Miranda - the hideous functional programming lingo || by Tim Walls, tjw1@doc.ic.ac.uk, http://www-students.doc.ic.ac.uk/~tjw1/ || || Call with 'bottlesofbeer 99'. bottlesofbeer :: num -> [char] bottlesofbeer n = "\nNo more bottles of beer on the wall, \n" ++ "no more bottles of beer.\n" , if n = 0 = "\nOne more bottle of beer on the wall, one bottle of beer,\n" ++ "Take one down and pass it around" ++ (bottlesofbeer (n-1)) , if n = 1 = "\n" ++ shownum(n) ++ " bottles of beer on the wall," ++ shownum(n) ++ " bottles of beer,\nTake one down and pass it around" ++ (bottlesofbeer (n-1)) , otherwise
s:" bottles of beer on the wall, bottles of beer. If bottles should happen to fall, bottles of beer on the wall. " d:{`0:,/|(r[];u[]),n'|3_!x+1} r:{k[(1;1;"that";"No more")]_di 8 39 64} u:{n[2]_di 105} n:{k(x;x;"one of those";x-1)} k:{,/($x),'0 30 51 83_ s}
#! /usr/local/lsh set-string s s set-string item one do i 99 1 -1 print (i) bottle(s) of beer on the wall, print (i) bottle(s) of beer. print You take (item) down, pass it around, set-string j {- (i) 1} if {=? (j) 1} set-string s set-string item it if {=? (i) 1} print No more bottles of beer on the wall.(newline) else print (j) bottle(s) of beer on the wall.(newline) cycle
luck: Beer99 proc: main new #bottles = 99 loop: #bottles > 0 saysolo #bottles say " bottle(s) of beer on the wall." saysolo #bottles say " bottle(s) of beer." say "Take one down and pass it around." #bottles = #bottles - 1 if: #bottles = 0 saysolo "No more" end if: #bottles > 0 saysolo #bottles end say " bottle(s) of beer on the wall." say end end
verse := function(n) bottles := function(n) return n eq 1 select "1 bottle" else IntegerToString(n) cat " bottles"; end function; return current cat " of beer on the wall,\n" cat current cat " of beer;\n" cat "Take one down, pass it around,\n" cat bottles(n - 1) cat " of beer on the wall.\n\n" where current is bottles(n); end function; song := procedure() print &cat [verse(n) : n in [99 .. 1 by -1]] cat "Go to the store and get some more."; end procedure;
# Jamfile for 99 Bottles of beer on the wall. # David Brandon (brandon@aspentech.com) ALWAYS beer ; rule Drink { for tenbeers in 9 8 7 6 5 4 3 2 1 "" { for beers in 9 8 7 6 5 4 3 2 1 0 { b = $(tenbeers)$(beers) ; if ( $(b) != 99 ) { ECHO "$(b) bottles of $(<) on the wall!" ; } if ( $(b) = 0 ) { EXIT "No more $(<)!" ; } ECHO "$(b) bottles of $(<) on the wall. $(b) bottles of $(<). Take one down," ; ECHO "pass it around..." ; } } } Drink beer ;
comment --- 99 bottles of beer, in Kermit scripting language. comment --- Execute by using the TAKE command in Kermit, or naming comment --- this file with the default initialization file name. comment --- 23-Sep-1997 --- Scott Snadow, snadow@eisner.decus.org set count 99 :loop if < \v(count) 99 echo \v(count) bottle(s) of beer on the wall. echo echo \v(count) bottle(s) of beer on the wall, \v(count) bottle(s) of beer. echo Take one down, pass it around, if count goto loop echo No bottles of beer on the wall.