第*回超絶技巧分科会(難解プログラミング言語)

  • Brainf*ck

esolangとしてはわりかし分かりやすい言語です。
ひとつの左右に無限に長いメモリと、その上を動くひとつのポインタからできています。


命令は8つあり、C言語風に表すと、

 + ・・・memory[index] += 1;
 - ・・・memory[index] -= 1;
 > ・・・index += 1;
 < ・・・index -= 1;
 . ・・・printf("%c",memory[index]);
 , ・・・scanf("%c",&memory[index]);
 [ ・・・while(true){ if(memory[index]==0)break;
 ] ・・・if(memory[index]==0)break; }

といった感じ。というか、多分ソースコードをこれで置換してやるとそのままうまくいくと思います。

インタプリタ書きましたので参考までに。
https://gist.github.com/satos---jp/5212947b771e3779487b

まあ、たとえばこちらの方が便利かもしれませんが。
http://www.usamimi.info/~ide/programe/brainfuck/brainfuck.html
あと、小技として、
たとえば、20インクリメントしたいとき、

++++++++++++++++++++

ではなく掛け算的に

>++++[<+++++>-]

とするとか、if文的なことをしたいときに、

[ if文の中身 [-]]

とするとか。