Let’s enjoy brainfuck. ~概要編~

brainfuckというプログラミング言語をご存知ですか?

今回は、brainfuckの使い方や簡単なコードの紹介をしようと思います。

コードの書き方

brainfuckの最も興味深い点は、使う文字がたったの8種類しかないことです。

コードとして認識されるのは以下の8種類だけで、それ以外の文字はすべてコメントとして扱われます。

+   …ポインタのメモリに1を足す
-   …ポインタのメモリから1を引く
>   …ポインタを右に1つずらす
<   …ポインタを左に1つずらす
[   …ポインタのメモリが0なら対応する"]"に飛ぶ
]   …ポインタのメモリが0ではないなら対応する"["に飛ぶ
.   …<メモリの数>番目のアスキーコードを出力する
,   …入力された1文字のアスキーコードをメモリに上書きする

それぞれの文字の使い方を詳しく見てみましょう。

それぞれ文字の説明

brainfuckではメモリが横に並んでいて最初は一番左のメモリにポインタがあるイメージです。

>を実行するとポインタが今いるメモリの1つ右のメモリに移動します。

同様に、<を実行するとポインタが今いるメモリの1つ左のメモリに移動します。

もし、ポインタが一番左(初期位置)にあるときに<をすると、エラーになるようです。

+-でメモリのに1を足したり引いたりします。

もし、メモリが0のとき、-をすると、メモリは255になります。

逆に、メモリが255のとき、+をすると、メモリは0になります。

,は入力された文字のアスキーコードをメモリに上書きします。

例えば、@(アスキーコードは64)が入力された場合,メモリには64が保存されます。

メモリに、どんな数字が入っていても上書きされてしまうため、注意が必要です。

実際にコードのを書いてみよう

試しに、@(アスキーコードは64)と出力するコードを書いてみましょう。

メモリを64にして出力すればいいのですが...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.

これだと、とても長いですよね。

そこで[]を使うことで掛け算を行いコードを短くします。

[ ]はメモリが0になるまで、かっこの中身を繰り返すイメージです。

64は8×8なので、メモリを8にし、そのメモリが0になるまで右のメモリに8を足し続ければいいのです。

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

コード紹介

最後に、文字を表示する簡単なコードを紹介したいと思います。

HELLO WORLD!
++++++++++++[>++++++>+++>+++++++<<<-]>.---.+++++++..+++.>----.>+++.<+<.+++.------.--------.>.

Yes
+++++++++[>++++++++++<-]>-.>+++[<++++>-]<.>++[<+++++++>-]<.

No
+++++++++++[>+++++++>++++++++++<<-]>+.>+.

ぜひ、brainfuckで遊んでみてください。


↓おすすめのサイト↓

アスキーコード表

コードの実行(言語をbrainfuckに設定)