mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-07 19:51:51 +09:00
254 lines
6.5 KiB
Plaintext
254 lines
6.5 KiB
Plaintext
# 99 bottles of beer in Brainf*ck
|
|
# Copyright (C) 2008 Raphael Bois
|
|
# 1671 brainf*ck instructions
|
|
# Published under GPL v2
|
|
|
|
Initialization
|
|
++ Counter for loop (a)
|
|
>+ unused
|
|
>++ Counter for loop (b)
|
|
> Flag for 'no more'
|
|
>+ Flag for not 'no more'
|
|
>>> (5) to (7) : temporary values
|
|
++++++++++[->+>+>++++++++++<<<]>>> 10 10 100 in (8) (9) (10)
|
|
>++++++++++ 10 in (11)
|
|
[-
|
|
>+++++ 50 in (12)
|
|
>++++++++++ 100 in (13)
|
|
>+++++++++++ 110 in (14)
|
|
>++++++++ 80 in (15)
|
|
>++++++++ 80 in (16)
|
|
>+++ 30 in (17)
|
|
>++++ 40 in (18)
|
|
>+ 10 in (19)
|
|
<<<<<<<<]
|
|
+
|
|
>-- + 48 '0' plus 1 in (12)
|
|
>++ + 102 'f' plus 1 in (13)
|
|
>+++++ + 115 's' plus 1 in (14)
|
|
>-- + 78 'N' plus 1 in (15)
|
|
>++++ + 84 'T' plus 1 in (16)
|
|
>++ + 32 ' ' plus 1 in (17)
|
|
>++++ + 44 comma plus 1 in (18)
|
|
> + 10 LF plus 1 in (19)
|
|
|
|
stuff for writing parts of the song
|
|
>+ select stuff
|
|
>+ select stuff
|
|
>+ write song part 3
|
|
>++ write song part 1
|
|
>+ write song part 2
|
|
>+ Flag for 'end of song'
|
|
>++ Flag for not 'end of song'
|
|
|
|
All bytes are at val plus 1
|
|
Go back to (7) with final initialization step (remove 1 to all bytes)
|
|
[-<]
|
|
|
|
<<<<<<< at (0)
|
|
[ loop (a)
|
|
-
|
|
|
|
>> at (2)
|
|
[ loop (b)
|
|
|
|
>>>>>>>> at (10)
|
|
[ start loop
|
|
|
|
<<<<<<< at (3)
|
|
[->[-]
|
|
print '(N|n)o more'
|
|
>>>>>>>>>>>. '(N|n)'
|
|
<----. 'o'
|
|
>>>. ' '
|
|
<<<--. 'm'
|
|
++. 'o'
|
|
+++.+ 'r'
|
|
<-.+ 'e'
|
|
<<+<<<<<<<<
|
|
]+> at (4)
|
|
[-<[-]>>>>> at (9)
|
|
prints number (using (9) and (10))
|
|
[>>>+<<<<+<+<+>>>-]<<<[->>>+<<<]> at (6)
|
|
[>>>>>>+<<<<<<-]>>>>>[[-]>.<]<<<<[>>>>>-<<<<<-]>> at (9)
|
|
[<<+<+<+>>>>-]<<<<[->>>>+<<<<]> at (6)
|
|
[>>>>>>+<<<<<<-]>>>>>>.<<<<<[>>>>>-<<<<<-] at (7)
|
|
|
|
memorize in (11) if (10) not 1
|
|
>>>[-<<<+<+>>>>]<<<<[->>>>+<<<<]>-[[-]>>>>+<<<<]<<< at (4)
|
|
]+
|
|
|
|
>>>>>>>> at (12)
|
|
print ' bottle(s) of beer'
|
|
>>>>>. ' '
|
|
<<<<----. 'b'
|
|
>----. 'o'
|
|
+++++..- 'tt'
|
|
<++++++++++. 'l'
|
|
-------. 'e'
|
|
<<[[-]>>>.<<<]>> 's' if (11)==1 ie if (10)!=1
|
|
>>>>. ' '
|
|
<<<----. 'o'
|
|
<+. 'f'
|
|
>>>>. ' '
|
|
<<<<----. 'b'
|
|
+++..+ 'ee'
|
|
>+++.+ 'r'
|
|
|
|
[>] at (20)
|
|
|
|
+>+>[->+<<-<-
|
|
print ' on the wall' DOT LF
|
|
<<<. ' '
|
|
<<<----. 'o'
|
|
-. 'n'
|
|
>>>. ' '
|
|
<<<++++++. 't'
|
|
<++. 'h'
|
|
---. 'e'
|
|
>>>>. ' '
|
|
<<<+++. 'w'
|
|
<----. 'a'
|
|
+++++++++++.. 'll'
|
|
------>---- reset to 'f' and 's'
|
|
>---------- ---------- ---------- -- sets (15) to 'N'
|
|
|
|
>>>++.-- DOT
|
|
>. LF
|
|
>>>] at (22)
|
|
|
|
>>>[->[-]<<<<<<<[<]<[-]>>[>]>>>>>]+ if end of song reset bottles counter
|
|
>[-<[-] at (25)
|
|
<<<< at (21)
|
|
[->>[->+<<<<-
|
|
print ' on the wall' COMMA ' '
|
|
<<<. ' '
|
|
<<<----. 'o'
|
|
-. 'n'
|
|
>>>. ' '
|
|
<<<++++++. 't'
|
|
<++. 'h'
|
|
---. 'e'
|
|
>>>>. ' '
|
|
<<<+++. 'w'
|
|
<----. 'a'
|
|
+++++++++++.. 'll'
|
|
|
|
------>---- reset (13) and (14) to 'f' and 's'
|
|
>++++++++++ ++++++++++ ++++++++++ ++ sets (15) to 'n'
|
|
|
|
>>>. comma
|
|
<. ' '
|
|
>>>>>>]<<]< at (20)
|
|
|
|
[->>>>[-<<+< at (21)
|
|
<<<++.-- DOT
|
|
>. LF
|
|
|
|
[<]<<<<<<<< at (3)
|
|
[->[-]<]+> at (4)
|
|
[-<[-]>
|
|
>>>>>>>>>>>>. 'T'
|
|
<<<-----. 'a'
|
|
++++++++++. 'k'
|
|
------. 'e'
|
|
>>>>. ' '
|
|
<<<----. 'o'
|
|
-. 'n'
|
|
<. 'e'
|
|
>>>>. ' '
|
|
<<<<-. 'd'
|
|
>+. 'o'
|
|
++++++++. 'w'
|
|
---------. 'n'
|
|
>>>. ' '
|
|
<<<<---. 'a'
|
|
>. 'n'
|
|
<+++. 'd'
|
|
>>>>. ' '
|
|
<<<++. 'p'
|
|
<---. 'a'
|
|
>+++.. 'ss'
|
|
>>>. ' '
|
|
<<<<++++++++. 'i'
|
|
>+. 't'
|
|
>>>. ' '
|
|
<<<<--------. 'a'
|
|
>--. 'r'
|
|
---. 'o'
|
|
++++++. 'u'
|
|
-------. 'n'
|
|
<+++. 'd'
|
|
++>+++++ reset (13) and (14) to 'f' and 's'
|
|
>>>>. comma
|
|
<. ' '
|
|
|
|
[<]<<<<<<< at (4)
|
|
]+
|
|
|
|
>>>>>> at (10)
|
|
decrements values
|
|
-<<<+>>[<<[-]<+<+>>>>-]<<<<[>-<[-]]>[->>>+<<<]>[->->+++++++++<<]>>> at (10)
|
|
|
|
>>[>]>>>>] at (24)
|
|
<<<<] at (20)
|
|
|
|
>>>>>>]+ at (26)
|
|
|
|
<<<<<<<[<]< at (10)
|
|
]
|
|
+<+
|
|
<<<<<<+< at (2)
|
|
-
|
|
]
|
|
|
|
print 'Go to the store and buy some more' comma ' '
|
|
|
|
>>>>>>>>>>[>]>>>>> at (25)
|
|
[->[-]<]+> at (26)
|
|
[-<[-]
|
|
<<<<<<<<< at (16)
|
|
-------------. 'G'
|
|
<<----. 'o'
|
|
>>>. ' '
|
|
<<<+++++. 't'
|
|
-----. 'o'
|
|
>>>. ' '
|
|
<<<+++++. 't'
|
|
<++. 'h'
|
|
---. 'e'
|
|
>>>>. ' '
|
|
<<<-. 's'
|
|
+. 't'
|
|
-----. 'o'
|
|
+++. 'r'
|
|
<. 'e'
|
|
>>>>. ' '
|
|
<<<<----. 'a'
|
|
>----. 'n'
|
|
<+++. 'd'
|
|
>>>>. ' '
|
|
<<<<--. 'b'
|
|
>+++++++. 'u'
|
|
++++. 'y'
|
|
>>>. ' '
|
|
<<<------. 's'
|
|
----. 'o'
|
|
--. 'm'
|
|
<+++. 'e'
|
|
>>>>. ' '
|
|
<<<. 'm'
|
|
++. 'o'
|
|
+++.+ 'r'
|
|
<.+ 'e'
|
|
>>>>>. coma
|
|
<. ' '
|
|
>>>>>>>>>
|
|
]+
|
|
|
|
Initialize last loop to print final '99 bottles of beer on the wall' DOT
|
|
<[-]+<[-]<[-]<[-]+<<< at (19)
|
|
[<]<[-]<[-]<[-]<[-] at (7)
|
|
++++++++++[->+>+>++++++++++<<<]>->->-
|
|
<<<<<<[-]+<[-]<+<< at (0)
|
|
] |