Brainf*ckとは
.,
Brainfuckの基本構文
C言語の基本構文と照らし合わせて考える
printf文
printf文はある特定の値を出力するプログラムだ。
まずは"A"を出力するプログラムを考えてみる。
ところで、brainf*ckではもともとの仮想セルに値は入っていないため値を入力する必要がある。
"A"のASCIIコードは65のためセルにまず65を入力するが数値は1ずつしか増やせないため65回インクリメントする。
++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ +++++
その後出力する。
指定しているセルは変わっていない(<や>が入力されていない)ため、そのまま出力する。
.
これで文字Aを出力するプログラムができた。
scanf文
scanf文は入力された値を読み取るプログラムである。
操作は","のみでできる。
何文字でも","コンマ一文字で可能となる。
echo入力された値をそのまま出力するプログラムは次のようになる。
,.
これは"echo"や"echoコマンド"と呼ばれている。
for文
for文ではカウンタセルと処理セルという二つの仮想セルを利用してループ処理を行う。
文字を繰り返し出力するには"."を繰り返し出力するだけなので今回はASCII文字を先頭から合計10文字出力するプログラムを考える
まずはカウンタセルに繰り返し回数を入力し、隣のセルへ移動する。
+++++ +++++>
次に値を一つ増やす、出力、値を一つ増やす、カウンタセルへ移動、カウントを一つ減らすという処理を行う
+.+<-
最後にfor文のいわゆる括弧{}にあたるかっこ[]で処理内容をまとめる。
+++++ +++++[>+.+<-]
これでASCIIコードの1から10文字分を取り出すことができた。
最後に
今回はprintf文、scanf文、for文しかできなかったがほかにもif文なども実装してみたいと思った。