110 lines
3.4 KiB
Brainfuck
110 lines
3.4 KiB
Brainfuck
|
This program is supposed to end up to be "FizzBuzz" written in Brainfuck
|
||
|
|
||
|
Print the numbers from 1 to 100 but for multiples of three print "Fizz"
|
||
|
instead of the number and for the multiples of five print "Buzz"
|
||
|
|
||
|
When numbers are both multiples of three and five print "FizzBuzz"
|
||
|
|
||
|
################################################################################
|
||
|
###
|
||
|
|
||
|
+++++ +++++ c0 : Set up the counter to a value of 10
|
||
|
[
|
||
|
>> +++++ +++++ c2 : Increment the cell by 10
|
||
|
<< - c0 : Decrement the cell by 1
|
||
|
]
|
||
|
|
||
|
At this point cell 2 is 100; datapointer is now at cell 0
|
||
|
|
||
|
################################################################################
|
||
|
###
|
||
|
|
||
|
+++++ +++++ c0 : Set cell 0 to the ASCII \n character
|
||
|
|
||
|
> c1
|
||
|
+++++ +++++ c1
|
||
|
+++++ +++++ c1
|
||
|
+++++ +++++ c1
|
||
|
++ c1 : Set cell 2 to the ASCII ' ' character
|
||
|
|
||
|
################################################################################
|
||
|
|
||
|
################################################################################
|
||
|
###
|
||
|
>> c3
|
||
|
|
||
|
+++++ +++++ c3 : Set the value to 10
|
||
|
|
||
|
[
|
||
|
> +++++ c4 : Increment by five
|
||
|
< - c3 : Decrement the counter
|
||
|
]
|
||
|
|
||
|
> - c4 : Decrement c4 from 50 for 49 (ascii "1")
|
||
|
: this will be used as the offset for
|
||
|
: printing
|
||
|
|
||
|
################################################################################
|
||
|
### Start the loop through 1 to 10 and print
|
||
|
<<< .. c1 : Jump to cell one to print two leading spaces
|
||
|
>>> . c4 : Print '1'
|
||
|
|
||
|
< +++++ +++ c3 : Set a counter to 8 to get 1 through 9 printed
|
||
|
|
||
|
[
|
||
|
<<< . c0 : Jump to and print cell 0 (\n)
|
||
|
> .. c1 : Print two leading spaces
|
||
|
>>> + . c4 : Increment cell 4 and print it
|
||
|
< - c3 : Decrement cell 3
|
||
|
]
|
||
|
|
||
|
> ----- ---- c4 : Bring cell four back to ascii '0'
|
||
|
|
||
|
|
||
|
<<<< . c0 : Print a newline after the last 9
|
||
|
|
||
|
|
||
|
################################################################################
|
||
|
### Start the loop through 100
|
||
|
|
||
|
>>>>> +++++ +++++ c5 : Set cell five to the ASCII '1'
|
||
|
+++++ +++++
|
||
|
+++++ +++++
|
||
|
+++++ +++++
|
||
|
+++++ ++++
|
||
|
|
||
|
<< c3
|
||
|
+++++ +++++ c3 : Pre-seed the counter with 10
|
||
|
|
||
|
|
||
|
[
|
||
|
-
|
||
|
<<< c0 : Jumping to cell zero just to give myself a clean slate
|
||
|
|
||
|
|
||
|
>>>>>> +++++ +++++ c6 : Set cell 6 to our nested loop counter
|
||
|
[
|
||
|
- c6 : Decrement counter by one
|
||
|
<<<<< . c1 : Print a leading space
|
||
|
>>>> c5
|
||
|
.
|
||
|
> c6
|
||
|
|
||
|
<< . + c4 : Print our last digit and increment it
|
||
|
>> c6
|
||
|
|
||
|
<<<<<< . c0 : Jump to cell zero to print a newline
|
||
|
>>>>>> c6
|
||
|
]
|
||
|
|
||
|
< + c5 : Increment second digit column in c5
|
||
|
> c6
|
||
|
|
||
|
<< ----- ----- c4 : Clear our last digit printer column
|
||
|
>>
|
||
|
|
||
|
<<<<<< c0
|
||
|
|
||
|
>>> c3
|
||
|
]
|