function brainfuck(code)
stack = zeros(100, 1);
stack_ptr = 0;
tape_length = 30000;
tape = zeros(tape_length, 1);
pointer = 1;
i = 1;
while i <= length(code)
switch code(i)
case '>'
pointer = pointer + 1;
if pointer > tape_length
pointer = 1;
end
case '<'
pointer = pointer - 1;
if pointer == 0
pointer = tape_length;
end
case '+'
tape(pointer) = tape(pointer) + 1;
case '-'
tape(pointer) = tape(pointer) - 1;
case '.'
case ','
case '['
if tape(pointer) == 0
i = closing(i, code);
else
stack_ptr = stack_ptr + 1;
stack(stack_ptr) = i;
end
case ']'
i = stack(stack_ptr) - 1;
stack_ptr = stack_ptr - 1;
end
i = i + 1;
end
end
function i = closing(j, code)
diff = 0;
for i = j:length(code)
if code(i) == '['
diff = diff + 1;
elseif code(i) == ']'
diff = diff - 1;
end
if diff == 0
break;
end
end
end
helloworld = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.";
sierpinski = ">++++[<++++++++>-]>++++++++[>++++<-]>>++>>>+>>>+<<<<<<<<<<[-[->+<]>[-<+>>>.<<]>>>[[->++++++++[>++++<-]>.<<[->+<]+>[->++++++++++<<+>]>.[-]>]]+<<<[-[->+<]+>[-<+>>>-[->+<]++>[-<->]<<<]<<<<]++++++++++.+++.[-]<]+++++";
fibonacci = "+++++++++++>+>>>>++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[-<-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<-]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<+>>[-]]<<<<<<<]>>>>>[++++++++++++++++++++++++++++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++++++++++++++++++++++++++++++++++++++++++++++.[-]<<<<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<[-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]";
brainfuck(helloworld);
brainfuck(fibonacci);
brainfuck(sierpinski);
ZnVuY3Rpb24gYnJhaW5mdWNrKGNvZGUpCiAgICBzdGFjayA9IHplcm9zKDEwMCwgMSk7CiAgICBzdGFja19wdHIgPSAwOwogICAgdGFwZV9sZW5ndGggPSAzMDAwMDsKICAgIHRhcGUgPSB6ZXJvcyh0YXBlX2xlbmd0aCwgMSk7CiAgICBwb2ludGVyID0gMTsKICAgIGkgPSAxOwogICAgd2hpbGUgaSA8PSBsZW5ndGgoY29kZSkKICAgICAgICBzd2l0Y2ggY29kZShpKQogICAgICAgICAgICBjYXNlICc+JwogICAgICAgICAgICAgICAgcG9pbnRlciA9IHBvaW50ZXIgKyAxOwogICAgICAgICAgICAgICAgaWYgcG9pbnRlciA+IHRhcGVfbGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgcG9pbnRlciA9IDE7CiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgY2FzZSAnPCcKICAgICAgICAgICAgICAgIHBvaW50ZXIgPSBwb2ludGVyIC0gMTsKICAgICAgICAgICAgICAgIGlmIHBvaW50ZXIgPT0gMAogICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgPSB0YXBlX2xlbmd0aDsKICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBjYXNlICcrJwogICAgICAgICAgICAgICAgdGFwZShwb2ludGVyKSA9IHRhcGUocG9pbnRlcikgKyAxOwogICAgICAgICAgICBjYXNlICctJwogICAgICAgICAgICAgICAgdGFwZShwb2ludGVyKSA9IHRhcGUocG9pbnRlcikgLSAxOwogICAgICAgICAgICBjYXNlICcuJwogICAgICAgICAgICAgICAgZnByaW50ZihjaGFyKHRhcGUocG9pbnRlcikpKTsKICAgICAgICAgICAgY2FzZSAnLCcKICAgICAgICAgICAgCQogICAgICAgICAgICBjYXNlICdbJwogICAgICAgICAgICAgICAgaWYgdGFwZShwb2ludGVyKSA9PSAwCiAgICAgICAgICAgICAgICAgICAgaSA9IGNsb3NpbmcoaSwgY29kZSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgc3RhY2tfcHRyID0gc3RhY2tfcHRyICsgMTsKICAgICAgICAgICAgICAgICAgICBzdGFjayhzdGFja19wdHIpID0gaTsKICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBjYXNlICddJwogICAgICAgICAgICAgICAgaSA9IHN0YWNrKHN0YWNrX3B0cikgLSAxOwogICAgICAgICAgICAgICAgc3RhY2tfcHRyID0gc3RhY2tfcHRyIC0gMTsKICAgICAgICBlbmQKICAgICAgICBpID0gaSArIDE7CiAgICBlbmQKZW5kCgpmdW5jdGlvbiBpID0gY2xvc2luZyhqLCBjb2RlKQogICAgZGlmZiA9IDA7CiAgICBmb3IgaSA9IGo6bGVuZ3RoKGNvZGUpCiAgICAgICAgaWYgY29kZShpKSA9PSAnWycKICAgICAgICAgICAgZGlmZiA9IGRpZmYgKyAxOwogICAgICAgIGVsc2VpZiBjb2RlKGkpID09ICddJwogICAgICAgICAgICBkaWZmID0gZGlmZiAtIDE7CiAgICAgICAgZW5kCiAgICAgICAgaWYgZGlmZiA9PSAwCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGVuZAogICAgZW5kCmVuZAoKaGVsbG93b3JsZCA9ICIrKysrKysrKysrWz4rKysrKysrPisrKysrKysrKys+KysrPis8PDw8LV0+KysuPisuKysrKysrKy4uKysrLj4rKy48PCsrKysrKysrKysrKysrKy4+LisrKy4tLS0tLS0uLS0tLS0tLS0uPisuPi4iOwoKc2llcnBpbnNraSA9ICI+KysrK1s8KysrKysrKys+LV0+KysrKysrKytbPisrKys8LV0+PisrPj4+Kz4+Pis8PDw8PDw8PDw8Wy1bLT4rPF0+Wy08Kz4+Pi48PF0+Pj5bWy0+KysrKysrKytbPisrKys8LV0+Ljw8Wy0+KzxdKz5bLT4rKysrKysrKysrPDwrPl0+LlstXT5dXSs8PDxbLVstPis8XSs+Wy08Kz4+Pi1bLT4rPF0rKz5bLTwtPl08PDxdPDw8PF0rKysrKysrKysrLisrKy5bLV08XSsrKysrIjsKCmZpYm9uYWNjaSA9ICIrKysrKysrKysrKz4rPj4+PisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrPisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrPDw8PDw8Wz5bPj4+Pj4+Kz4rPDw8PDw8PC1dPj4+Pj4+Pls8PDw8PDw8Kz4+Pj4+Pj4tXTxbPisrKysrKysrKytbLTwtWz4+Kz4rPDw8LV0+Pj5bPDw8Kz4+Pi1dKzxbPlstXTxbLV1dPls8PFs+Pj4rPDw8LV0+PlstXV08PF0+Pj5bPj4rPis8PDwtXT4+Pls8PDwrPj4+LV0rPFs+Wy1dPFstXV0+Wzw8Kz4+Wy1dXTw8PDw8PDxdPj4+Pj5bKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLlstXV0rKysrKysrKysrPFstPi08XT4rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysuWy1dPDw8PDw8PDw8PDw8Wz4+Pis+Kzw8PDwtXT4+Pj5bPDw8PCs+Pj4+LV08LVs+Pi4+Ljw8PFstXV08PFs+Pis+Kzw8PC1dPj4+Wzw8PCs+Pj4tXTw8WzwrPi1dPls8Kz4tXTw8PC1dIjsKCmJyYWluZnVjayhoZWxsb3dvcmxkKTsKZnByaW50ZiAiXG4iOwpicmFpbmZ1Y2soZmlib25hY2NpKTsKZnByaW50ZiAiXG4iOwpicmFpbmZ1Y2soc2llcnBpbnNraSk7Cg==
Hello World!
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
*
* *
* *
* * * *
* *
* * * *
* * * *
* * * * * * * *
* *
* * * *
* * * *
* * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* *
* * * *
* * * *
* * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *