第*回超絶技巧分科会(難解プログラミング言語)
- 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文の中身 [-]]
とするとか。