Language Brainfuck
(slightly improved version)
Date: | 07/01/05 |
Author: | Mark Hurd |
URL: | http://www.ozemail.com.au/~markhurd/ |
Comments: | 1 |
Info: | n/a |
Score: | ![]() |
########################## ### ### Severely updated version! ### (now says "1 bottle" and ### contains no extra "0" verse) ### with further edits to not rely on typeover ### ########################## ### 99 Bottles of Beer ### ### coded in Brainfuck ### ### with explanations ### ########################## # # This Bottles of Beer program # was written by Andrew Paczkowski # Coder Alias: thepacz # three_halves_plus_one@yahoo.com # Edited by Mark Hurd # markehurd@gmail.com ##### > 0 in the zeroth cell +++++++>++++++++++[<+++++>-] 57 in the first cell or "9" +++++++>++++++++++[<+++++>-] 57 in second cell or "9" ++++++++++ 10 in third cell >+++++++++ 9 in fourth cell ########################################## ### create ASCII chars in higher cells ### ########################################## >>++++++++[<++++>-] " " >++++++++++++++[<+++++++>-] b +>+++++++++++[<++++++++++>-] o ++>+++++++++++++++++++[<++++++>-] t ++>+++++++++++++++++++[<++++++>-] t >++++++++++++[<+++++++++>-] l +>++++++++++[<++++++++++>-] e +>+++++++++++++++++++[<++++++>-] s >++++++++[<++++>-] " " +>+++++++++++[<++++++++++>-] o ++>++++++++++[<++++++++++>-] f >++++++++[<++++>-] " " >++++++++++++++[<+++++++>-] b +>++++++++++[<++++++++++>-] e +>++++++++++[<++++++++++>-] e >+++++++++++++++++++[<++++++>-] r >++++++++[<++++>-] " " +>+++++++++++[<++++++++++>-] o >+++++++++++[<++++++++++>-] n >++++++++[<++++>-] " " ++>+++++++++++++++++++[<++++++>-] t ++++>++++++++++[<++++++++++>-] h +>++++++++++[<++++++++++>-] e >++++++++[<++++>-] " " ++>+++++++++++++[<+++++++++>-] w +>++++++++++++[<++++++++>-] a >++++++++++++[<+++++++++>-] l >++++++++++++[<+++++++++>-] l >+++++[<++>-] LF +++++++++++++> CR ++>+++++++++++++++++++[<++++++>-] t +>++++++++++++[<++++++++>-] a +++>+++++++++++++[<++++++++>-] k +>++++++++++[<++++++++++>-] e >++++++++[<++++>-] " " +>+++++++++++[<++++++++++>-] o >+++++++++++[<++++++++++>-] n +>++++++++++[<++++++++++>-] e >++++++++[<++++>-] " " >++++++++++[<++++++++++>-] d +>+++++++++++[<++++++++++>-] o ++>+++++++++++++[<+++++++++>-] w >+++++++++++[<++++++++++>-] n >++++++++[<++++>-] " " +>++++++++++++[<++++++++>-] a >+++++++++++[<++++++++++>-] n >++++++++++[<++++++++++>-] d >++++++++[<++++>-] " " ++>+++++++++++[<++++++++++>-] p +>++++++++++++[<++++++++>-] a +>+++++++++++++++++++[<++++++>-] s +>+++++++++++++++++++[<++++++>-] s >++++++++[<++++>-] " " +>+++++++++++++[<++++++++>-] i ++>+++++++++++++++++++[<++++++>-] t >++++++++[<++++>-] " " +>++++++++++++[<++++++++>-] a >+++++++++++++++++++[<++++++>-] r +>+++++++++++[<++++++++++>-] o >+++++++++++++[<+++++++++>-] u >+++++++++++[<++++++++++>-] n >++++++++++[<++++++++++>-] d >+++++[<++>-] LF +++++++++++++ CR [<]>>>> go back to fourth cell ################################# ### initiate the display loop ### ################################# [ loop <- back to cell 3 [+ loop [>]<< go to last cell and back to LF .>.<.>. output 2 newlines [<]> go to first cell ################################### #### begin display of characters### ################################### # .>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> #X X b o t t l e s o f b e e r .>.>.>.>.>.>.>.>.>.>.>.>. #o n t h e w a l l N L [<]> go to first cell .>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.>.> #X X b o t t l e s o f b e e r N L .>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> #t a k e o n e d o w n a n d p a s s .>.>.>.>.>.>.>.>.>.>. #i t a r o u n d N L ##### [<]>> go to cell 2 - subtract 1 from cell 2 < go to cell 1 ######################## ### display last line ## ######################## # .>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> #X X b o t t l e s o f b e e r .>.>.>.>.>.>.>.>.>.>. #o n t h e w a l l ##### [<]>>>-- go to cell 3/subtract 1 ]+ end loop when cell 3 is 0 [>]<< go to last cell and back to LF .>.<.>. output 2 newlines [<]> go to first cell ################################### #### begin display of characters### ################################### # .>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> #X X b o t t l e s o f b e e r .>.>.>.>.>.>.>.>.>.>.>.>. #o n t h e w a l l N L [<]> go to first cell .>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.>.> #X X b o t t l e s o f b e e r N L .>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> #t a k e o n e d o w n a n d p a s s .>.>.>.>.>.>.>.>.>.>. #i t a r o u n d N L ##### [<]>- cell 1 subtract 1 >+++++++++ add 9 to cell 2 >+++++++++ cell 3 add 9 << go to first line ######################## ### correct last line ## ######################## # .>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> #X 9 b o t t l e s o f b e e r .>.>.>.>.>.>.>.>.>.>. #o n t h e w a l l ##### [<]>>>>- go to cell 4/subtract 1 ] end loop when cell 4 is 0 ############################################################## ### By this point verses 99\10 are displayed but to work ### ### with the lower numbered verses in a more readable way ### ### we initiate a new loop for verses 9{CODE} that will not ### ### use the fourth cell at all ### ############################################################## + add 1 to cell four (to keep it non\zero) <--- back to cell 3/subtract 2 [+ loop [>]<< go to last cell and back to LF .>.<.>. output 2 newlines [<]> go to first cell ################################### #### begin display of characters### ################################### # >.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> # X b o t t l e s o f b e e r .>.>.>.>.>.>.>.>.>.>.>.>. #o n t h e w a l l N L [<]> go to first cell >.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.>.> # X b o t t l e s o f b e e r N L .>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> #t a k e o n e d o w n a n d p a s s .>.>.>.>.>.>.>.>.>.>. #i t a r o u n d N L ##### [<]>> go to cell 2 - subtract 1 from cell 2 ######################## ### display last line ## ######################## # .>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> #X b o t t l e s o f b e e r .>.>.>.>.>.>.>.>.>.>. #o n t h e w a l l ##### [<]>>>-- go to cell 3/subtract 1 ]+ end loop when cell 3 is 0 [>]<< go to last cell and back to LF .>.<.>. output 2 newlines [<]> go to first cell ################################### #### begin display of characters### ################################### # >.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> # 2 b o t t l e s o f b e e r .>.>.>.>.>.>.>.>.>.>.>.>. #o n t h e w a l l N L [<]> go to first cell >.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.>.> # 2 b o t t l e s o f b e e r N L .>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> #t a k e o n e d o w n a n d p a s s .>.>.>.>.>.>.>.>.>.>. #i t a r o u n d N L ##### [<]>> go to cell 2 - subtract 1 from cell 2 #+ add 1 to cell 3 to keep it non\zero #[>]<<.>. go to last line/carriage return <#[<]> go to first line ######################## ### correct last line ## ######################## # >.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>.> # 1 b o t t l e o f b e e r .>.>.>.>.>.>.>.>.>.>.<<<<. #o n t h e w a l l ##### [>]<< go to last cell and back to LF .>.<.>. output 2 newlines [<]> go to first line ######################### ### the final verse ## ######################### # >.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>.> # 1 b o t t l e o f b e e r .>.>.>.>.>.>.>.>.>.>.>.>. #o n t h e w a l l N L [<]> go to first cell >.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.>.> # 1 b o t t l e o f b e e r N L .>.>.>.>.> > > > > > > > > > > > > > > > > > > #t a k e (o n e d o w n a n d p a s s ) .>.<< < < < < < < < < < < < < < < #i t .>.>.>.>.>.>.>.>.>.>.>.>.>.>.> # d o w n a n d p a s s .>.>.>.>.>.>.>.>.>.>. #i t a r o u n d N L [>]< go to last line <<<.<<. # n o [<]>>>> go to fourth cell >.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> # b o t t l e s o f b e e r .>.>.>.>.>.>.>.>.>.>.>.>. #o n t h e w a l l N L #####fin##
Download Source | Write Comment
Alternative Versions
Version | Author | Date | Comments | Rate |
---|---|---|---|---|
bottle shaped | Michal Wojciech Tarnowski | 11/13/10 | 0 | ![]() ![]() |
Exact and complete lyrics | Raphaël Bois | 03/07/08 | 4 | ![]() ![]() |
original version | Andrew Paczkowski | 05/30/05 | 29 | ![]() ![]() |
lean and mean | Aki Rossi | 06/29/07 | 4 | ![]() ![]() |
Download Source | Write Comment
Add Comment
Please provide a value for the fields Name,
Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.
Please don't post large portions of code here! Use the form to submit new examples or updates instead!
Comments
This version prints out (at the end)
2 bottles of beer on the wall
2 bottles of beer
take one down and pass it around
2 bottle of beer on the wall
2 bottle of beer on the wall
2 bottle of beer
take it down and pass it around
no bottles of beer on the wall
which doesn't seem to be correct.