Home | History | Annotate | Line # | Download | only in tutorial
      1  1.1  alnsn ##########################
      2  1.1  alnsn ###
      3  1.1  alnsn ### Severely updated version!
      4  1.1  alnsn ### (now says "1 bottle" and
      5  1.1  alnsn ### contains no extra "0" verse)
      6  1.1  alnsn ###
      7  1.1  alnsn ##########################
      8  1.1  alnsn ### 99 Bottles of Beer ###
      9  1.1  alnsn ### coded in Brainfuck ###
     10  1.1  alnsn ### with explanations  ###
     11  1.1  alnsn ##########################
     12  1.1  alnsn #
     13  1.1  alnsn # This Bottles of Beer program
     14  1.1  alnsn # was written by Andrew Paczkowski
     15  1.1  alnsn # Coder Alias: thepacz
     16  1.1  alnsn # three_halves_plus_one (at] yahoo.com
     17  1.1  alnsn #####
     18  1.1  alnsn 
     19  1.1  alnsn >                            0 in the zeroth cell
     20  1.1  alnsn +++++++>++++++++++[<+++++>-] 57 in the first cell or "9"
     21  1.1  alnsn +++++++>++++++++++[<+++++>-] 57 in second cell or "9"
     22  1.1  alnsn ++++++++++                   10 in third cell
     23  1.1  alnsn >+++++++++                    9 in fourth cell
     24  1.1  alnsn 
     25  1.1  alnsn ##########################################
     26  1.1  alnsn ### create ASCII chars in higher cells ###
     27  1.1  alnsn ##########################################
     28  1.1  alnsn 
     29  1.1  alnsn >>++++++++[<++++>-]               " "
     30  1.1  alnsn >++++++++++++++[<+++++++>-]        b
     31  1.1  alnsn +>+++++++++++[<++++++++++>-]       o
     32  1.1  alnsn ++>+++++++++++++++++++[<++++++>-]  t
     33  1.1  alnsn ++>+++++++++++++++++++[<++++++>-]  t
     34  1.1  alnsn >++++++++++++[<+++++++++>-]        l
     35  1.1  alnsn +>++++++++++[<++++++++++>-]        e
     36  1.1  alnsn +>+++++++++++++++++++[<++++++>-]   s
     37  1.1  alnsn >++++++++[<++++>-]                " "
     38  1.1  alnsn +>+++++++++++[<++++++++++>-]       o
     39  1.1  alnsn ++>++++++++++[<++++++++++>-]       f
     40  1.1  alnsn >++++++++[<++++>-]                " "
     41  1.1  alnsn >++++++++++++++[<+++++++>-]        b
     42  1.1  alnsn +>++++++++++[<++++++++++>-]        e
     43  1.1  alnsn +>++++++++++[<++++++++++>-]        e
     44  1.1  alnsn >+++++++++++++++++++[<++++++>-]    r
     45  1.1  alnsn >++++++++[<++++>-]                " "
     46  1.1  alnsn +>+++++++++++[<++++++++++>-]       o
     47  1.1  alnsn >+++++++++++[<++++++++++>-]        n
     48  1.1  alnsn >++++++++[<++++>-]                " "
     49  1.1  alnsn ++>+++++++++++++++++++[<++++++>-]  t
     50  1.1  alnsn ++++>++++++++++[<++++++++++>-]     h
     51  1.1  alnsn +>++++++++++[<++++++++++>-]        e
     52  1.1  alnsn >++++++++[<++++>-]                " "
     53  1.1  alnsn ++>+++++++++++++[<+++++++++>-]     w
     54  1.1  alnsn +>++++++++++++[<++++++++>-]        a
     55  1.1  alnsn >++++++++++++[<+++++++++>-]        l
     56  1.1  alnsn >++++++++++++[<+++++++++>-]        l
     57  1.1  alnsn >+++++[<++>-]                      LF
     58  1.1  alnsn ++>+++++++++++++++++++[<++++++>-]  t
     59  1.1  alnsn +>++++++++++++[<++++++++>-]        a
     60  1.1  alnsn +++>+++++++++++++[<++++++++>-]     k
     61  1.1  alnsn +>++++++++++[<++++++++++>-]        e
     62  1.1  alnsn >++++++++[<++++>-]                " "
     63  1.1  alnsn +>+++++++++++[<++++++++++>-]       o
     64  1.1  alnsn >+++++++++++[<++++++++++>-]        n
     65  1.1  alnsn +>++++++++++[<++++++++++>-]        e
     66  1.1  alnsn >++++++++[<++++>-]                " "
     67  1.1  alnsn >++++++++++[<++++++++++>-]         d
     68  1.1  alnsn +>+++++++++++[<++++++++++>-]       o
     69  1.1  alnsn ++>+++++++++++++[<+++++++++>-]     w
     70  1.1  alnsn >+++++++++++[<++++++++++>-]        n
     71  1.1  alnsn >++++++++[<++++>-]                " "
     72  1.1  alnsn +>++++++++++++[<++++++++>-]        a
     73  1.1  alnsn >+++++++++++[<++++++++++>-]        n
     74  1.1  alnsn >++++++++++[<++++++++++>-]         d
     75  1.1  alnsn >++++++++[<++++>-]                " "
     76  1.1  alnsn ++>+++++++++++[<++++++++++>-]      p
     77  1.1  alnsn +>++++++++++++[<++++++++>-]        a
     78  1.1  alnsn +>+++++++++++++++++++[<++++++>-]   s
     79  1.1  alnsn +>+++++++++++++++++++[<++++++>-]   s
     80  1.1  alnsn >++++++++[<++++>-]                " "
     81  1.1  alnsn +>+++++++++++++[<++++++++>-]       i
     82  1.1  alnsn ++>+++++++++++++++++++[<++++++>-]  t
     83  1.1  alnsn >++++++++[<++++>-]                " "
     84  1.1  alnsn +>++++++++++++[<++++++++>-]        a
     85  1.1  alnsn >+++++++++++++++++++[<++++++>-]    r
     86  1.1  alnsn +>+++++++++++[<++++++++++>-]       o
     87  1.1  alnsn >+++++++++++++[<+++++++++>-]       u
     88  1.1  alnsn >+++++++++++[<++++++++++>-]        n
     89  1.1  alnsn >++++++++++[<++++++++++>-]         d
     90  1.1  alnsn >+++++[<++>-]                      LF
     91  1.1  alnsn +++++++++++++                      CR
     92  1.1  alnsn 
     93  1.1  alnsn [<]>>>>      go back to fourth cell
     94  1.1  alnsn 
     95  1.1  alnsn #################################
     96  1.1  alnsn ### initiate the display loop ###
     97  1.1  alnsn #################################
     98  1.1  alnsn 
     99  1.1  alnsn [            loop
    100  1.1  alnsn  <           back to cell 3
    101  1.1  alnsn  [            loop
    102  1.1  alnsn   [>]<<       go to last cell and back to LF
    103  1.1  alnsn   ..          output 2 newlines
    104  1.1  alnsn   [<]>        go to first cell
    105  1.1  alnsn 
    106  1.1  alnsn  ###################################
    107  1.1  alnsn  #### begin display of characters###
    108  1.1  alnsn  ###################################
    109  1.1  alnsn  #
    110  1.1  alnsn  #.>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
    111  1.1  alnsn  #X X     b o t t l e s   o f   b e e r  
    112  1.1  alnsn  #.>.>.>.>.>.>.>.>.>.>.>.
    113  1.1  alnsn  #o n   t h e   w a l l N
    114  1.1  alnsn  #[<]>    go to first cell
    115  1.1  alnsn  #.>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.>
    116  1.1  alnsn  #X X     b o t t l e s   o f   b e e r             N
    117  1.1  alnsn  #.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
    118  1.1  alnsn  #t a k e   o n e   d o w n   a n d   p a s s   
    119  1.1  alnsn  #.>.>.>.>.>.>.>.>.>.
    120  1.1  alnsn  #i t   a r o u n d N
    121  1.1  alnsn  #####
    122  1.1  alnsn 
    123  1.1  alnsn   [<]>>      go to cell 2
    124  1.1  alnsn   -          subtract 1 from cell 2
    125  1.1  alnsn   <          go to cell 1
    126  1.1  alnsn 
    127  1.1  alnsn  ########################
    128  1.1  alnsn  ### display last line ##
    129  1.1  alnsn  ########################
    130  1.1  alnsn  #
    131  1.1  alnsn  #.>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
    132  1.1  alnsn  #X X     b o t t l e s   o f   b e e r  
    133  1.1  alnsn  #.>.>.>.>.>.>.>.>.>.>.
    134  1.1  alnsn  #o n   t h e   w a l l
    135  1.1  alnsn  #####
    136  1.1  alnsn 
    137  1.1  alnsn   [<]>>>-      go to cell 3/subtract 1
    138  1.1  alnsn  ]            end loop when cell 3 is 0
    139  1.1  alnsn  ++++++++++   add 10 to cell 3
    140  1.1  alnsn  <++++++++++  back to cell 2/add 10
    141  1.1  alnsn  <-           back to cell 1/subtract 1
    142  1.1  alnsn  [>]<.        go to last line/carriage return
    143  1.1  alnsn  [<]>         go to first line
    144  1.1  alnsn 
    145  1.1  alnsn ########################
    146  1.1  alnsn ### correct last line ##
    147  1.1  alnsn ########################
    148  1.1  alnsn #
    149  1.1  alnsn #.>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
    150  1.1  alnsn #X X     b o t t l e s   o f   b e e r  
    151  1.1  alnsn #.>.>.>.>.>.>.>.>.>.>.
    152  1.1  alnsn #o n   t h e   w a l l
    153  1.1  alnsn #####
    154  1.1  alnsn 
    155  1.1  alnsn  [<]>>>>-    go to cell 4/subtract 1
    156  1.1  alnsn ]           end loop when cell 4 is 0
    157  1.1  alnsn 
    158  1.1  alnsn ##############################################################
    159  1.1  alnsn ### By this point verses 9910 are displayed but to work   ###
    160  1.1  alnsn ### with the lower numbered verses in a more readable way  ###
    161  1.1  alnsn ### we initiate a new loop for verses 9{CODE} that will not    ###
    162  1.1  alnsn ### use the fourth cell at all                             ###
    163  1.1  alnsn ##############################################################
    164  1.1  alnsn 
    165  1.1  alnsn +           add 1 to cell four (to keep it nonzero)
    166  1.1  alnsn <--         back to cell 3/subtract 2
    167  1.1  alnsn 
    168  1.1  alnsn [            loop
    169  1.1  alnsn  [>]<<       go to last cell and back to LF
    170  1.1  alnsn  ..          output 2 newlines
    171  1.1  alnsn  [<]>        go to first cell
    172  1.1  alnsn 
    173  1.1  alnsn  ###################################
    174  1.1  alnsn  #### begin display of characters###
    175  1.1  alnsn  ###################################
    176  1.1  alnsn  #
    177  1.1  alnsn  #>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
    178  1.1  alnsn  # X     b o t t l e s   o f   b e e r  
    179  1.1  alnsn  #.>.>.>.>.>.>.>.>.>.>.>.
    180  1.1  alnsn  #o n   t h e   w a l l N
    181  1.1  alnsn  #[<]>    go to first cell
    182  1.1  alnsn  #>.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.>
    183  1.1  alnsn  # X     b o t t l e s   o f   b e e r             N
    184  1.1  alnsn  #.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
    185  1.1  alnsn  #t a k e   o n e   d o w n   a n d   p a s s   
    186  1.1  alnsn  #.>.>.>.>.>.>.>.>.>.
    187  1.1  alnsn  #i t   a r o u n d N
    188  1.1  alnsn  #####
    189  1.1  alnsn 
    190  1.1  alnsn  [<]>>       go to cell 2
    191  1.1  alnsn  -           subtract 1 from cell 2
    192  1.1  alnsn 
    193  1.1  alnsn  ########################
    194  1.1  alnsn  ### display last line ##
    195  1.1  alnsn  ########################
    196  1.1  alnsn  #
    197  1.1  alnsn  #.>>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
    198  1.1  alnsn  #X     b o t t l e s   o f   b e e r  
    199  1.1  alnsn  #.>.>.>.>.>.>.>.>.>.>.
    200  1.1  alnsn  #o n   t h e   w a l l
    201  1.1  alnsn  #####
    202  1.1  alnsn 
    203  1.1  alnsn  [<]>>>-     go to cell 3/subtract 1
    204  1.1  alnsn ]            end loop when cell 3 is 0
    205  1.1  alnsn +            add 1 to cell 3 to keep it nonzero
    206  1.1  alnsn 
    207  1.1  alnsn [>]<.        go to last line/carriage return
    208  1.1  alnsn [<]>         go to first line
    209  1.1  alnsn 
    210  1.1  alnsn ########################
    211  1.1  alnsn ### correct last line ##
    212  1.1  alnsn ########################
    213  1.1  alnsn #
    214  1.1  alnsn #>.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>.>
    215  1.1  alnsn # X     b o t t l e    o f   b e e r  
    216  1.1  alnsn #.>.>.>.>.>.>.>.>.>.>.<<<<.
    217  1.1  alnsn #o n   t h e   w a l l
    218  1.1  alnsn #####
    219  1.1  alnsn 
    220  1.1  alnsn [>]<<       go to last cell and back to LF
    221  1.1  alnsn ..          output 2 newlines
    222  1.1  alnsn [<]>        go to first line
    223  1.1  alnsn 
    224  1.1  alnsn #########################
    225  1.1  alnsn ### the final verse    ##
    226  1.1  alnsn #########################
    227  1.1  alnsn #
    228  1.1  alnsn #>.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>.>
    229  1.1  alnsn # X     b o t t l e    o f   b e e r  
    230  1.1  alnsn #.>.>.>.>.>.>.>.>.>.>.>.
    231  1.1  alnsn #o n   t h e   w a l l N
    232  1.1  alnsn #[<]>        go to first cell
    233  1.1  alnsn #>.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.>
    234  1.1  alnsn # X     b o t t l e    o f   b e e r             N
    235  1.1  alnsn #.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
    236  1.1  alnsn #t a k e   o n e   d o w n   a n d   p a s s   
    237  1.1  alnsn #.>.>.>.>.>.>.>.>.>.
    238  1.1  alnsn #i t   a r o u n d N
    239  1.1  alnsn #[>]<        go to last line
    240  1.1  alnsn #<<<.<<.<<<.
    241  1.1  alnsn #   n  o    
    242  1.1  alnsn #[<]>>>>     go to fourth cell
    243  1.1  alnsn #>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
    244  1.1  alnsn #   b o t t l e s   o f   b e e r  
    245  1.1  alnsn #.>.>.>.>.>.>.>.>.>.>.>.
    246  1.1  alnsn #o n   t h e   w a l l N
    247  1.1  alnsn #####fin##