素材の味

丁寧に暮らしています

Brainf*ckで入力された2つの値の比較

仕事でPHP書いてたけど飽きたので息抜きでBrainf*ckやってた。

コードはこれ

,>,< #比較する2つの文字をポインタに入力

>>>+<<<
>>>>+<<<<

[->-<]  #2つのポインタの値を減らしてく。かわいい。

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

>>>[- #2つの値が等しい時の処理
>> 

# TRUEって表示するための処理。くそ適当
++++++++++[>++++++++<-]>++++.--.+++.----------------.[-] <

<<
>-<]<<<  #ここで次の処理が実行されないようにしてる

>>>>[- #2つの値が等しくない時の処理

# FALSEって表示するための処理。こっちも適当
+++++++[>++++++++++<-]>.-----.+++++++++++.+++++++.--------------.
<[-]]<<<<

入力

45
dd
f8

出力

FALSE
TRUE
FALSE

brainfuck interpreter でコード書いてうごかしてたけど、ideone.comで実行してみたら、
ひとつ目の値>ふたつ目の値になった時にうまく動かなかった。
ポインタが指してる値が0で、更にデクリメントした時の挙動が違うのが原因だと思う。
ideoneの方が正しい挙動だろうけど、考えなおすのめんどくさいからとりあえずこのままで。
気が向いたらideoneに合わせて書き直す。

[-]が結構便利だと思った。
ポインタの値をゼロにするから文字を出力した後始末とかに使えると思う。

どのくらいコードかければBrainf*cker名乗っていいのかな。