Language Brainfuck
(slightly improved version)
| Date: | 07/01/05 |
| Author: | Mark Hurd |
| URL: | http://www.ozemail.com.au/~markhurd/ |
| Comments: | 0 |
| 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 |
|---|---|---|---|---|
| original version | Andrew Paczkowski | 05/30/05 | 16 | |
| Exact and complete lyrics | Raphaël Bois | 03/07/08 | 1 | |
| lean and mean | Aki Rossi | 06/29/07 | 3 |
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