Skip to content

Instantly share code, notes, and snippets.

@kangalio
Created November 19, 2021 09:57
Show Gist options
  • Save kangalio/74cc4cf204b1043dfb76b3bf61bd6f6f to your computer and use it in GitHub Desktop.
Save kangalio/74cc4cf204b1043dfb76b3bf61bd6f6f to your computer and use it in GitHub Desktop.
Brainfuck implementation of a variable size letter diamond shape
We use cell 1 and 2 as temp cells for copying or building values
+++++++++++++++++++++++++++ 4 to cell 0
>>+++++++++[>+++++<-]>+ 46 (ASCII dot) to cell 3; cell 2 temp; =3
<++++++++[>>++++++++<<-]>>+ 97 (ASCII 'A') to cell 4; cell 2 temp; =4
>++++++++++ 10 (ASCII newline) to cell 5
<<<<<[>+>>.<<<-]>[<+>-] print cell 3 {cell 0} times; cell 1 temp
>>>. print cell 4
<<<<[>+>>.<<<-]>[<+>-] print cell 3 {cell 0} times; cell 1 temp
>>>>. print cell 5
<<<<<[>+>+<<-]>>[<<+>>-] copy cell 0 to cell 1; cell 2 temp
>>>>+ 1 to cell 6; it counts number of inner dots
<<<<<[- iterate over {cell 1} minus 1; {cell 0} minus 2; etc; 0
[>+>.<<-]>[<+>-] print dot (cell 3) {cell 1} times; cell 2 temp
>>+. increment letter (cell 4) and print
>>[<<<<+>.>>>-]<<<<[>>>>+<<<<-] print dot (cell 3) {cell 6} times; cell 2 temp
>>>>++ add 2 to cell 6
<<. print letter (cell 4) again
<<<[>+>.<<-]>[<+>-] print dot (cell 3) {cell 1} times; cell 2 temp
>>>. print newline (cell 5)
<<<<] loop end (cell 1)
+ 1 to cell 1; it counts number of outer dots
>>>>>---[- iterate over {cell 6} minus 2; {cell 6} minus 4; etc; 1
<<<<<[>+>.<<-]>[<+>-] print dot (cell 3) {cell 1} times; cell 2 temp
>>-. decrement letter (cell 4) and print
>>[<<<<+>.>>>-]<<<<[>>>>+<<<<-] print dot (cell 3) {cell 6} times; cell 2 temp
>>. print letter (cell 4) again
<<<[>+>.<<-]>[<+>-] print dot (cell 3) {cell 1} times; cell 2 temp
>>>. print newline (cell 5)
<<<<+ increment cell 1
>>>>>-] loop end (cell 6)
<<- decrement letter (cell 4) to get back to start letter
<<<<[>>>.<<<-] print cell 3 {cell 0} times; cell 0 consumed
>>>>. print cell 4
<<<[>>.<<-] print cell 3 {cell 1} times; cell 1 consumed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment