99 botles of beer пример

Пример программы 99 бутылок пива на языке Ъ:

        ##########################
        ###
        ### 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@ahoo.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
        J  ########################
        ### correct last line ##
        ########################
        # $
       
         >.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>.>
        # 1     b o t t l e    o f   b e e r  
         .>.>.>.>.>.>.>.>.>.>.<<<<.
        J o n   t h e   w a l l $
        [>]<<       go to last cell and back to LF
        .>.<.>.     output 2 newlines
        [<]>        go to first line
        J the final verse     $
         >.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>.>
        J 1     b o t t l e    o f   b e e r    $
         .>.>.>.>.>.>.>.>.>.>.>.>.
        J o n   t h e   w a l l N L $
         [<]>        J go to first cell $
         >.>>>.>.>.>.>.>.>.>>.>.>.>.>.>.>.>.>>>>>>>>>>>>>.>.>
         J 1     b o t t l e    o f   b e e r             N L $ 
         .>.>.>.>.> > > > > > > > > > > > > > > > > > >
         J t a k e   (o n e   d o w n   a n d   p a s s  ) $
         .>.<<              < < < < < < < < < < < < < <
        J i t $
         .>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
        J  d o w n   a n d   p a s s   $  
         .>.>.>.>.>.>.>.>.>.>.
        J  i t   a r o u n d N L $
         [>]<       J go to last line $
         <<<.<<.
         J n  o $       
         [<]>>>>     J go to fourth cell $
         >.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>
        J   b o t t l e s   o f   b e e r  $
         .>.>.>.>.>.>.>.>.>.>.>.>.
        J
         o n   t h e   w a l l N L
        $
        E