お久しぶりです。中院です。
皆さんはBrainf**kという言語をご存知でしょうか?
名前で抵抗感を覚えるかもしれませんが実はこれ、図に書いて簡単に説明できちゃいます。
ということで今回はBrainf**kの簡略図を作ってみましょう。
なお、この記事はCC BY 4.0のもと自由に使用できます。
目次
Brainf**kの各種記号
ただこの記事を読んでいる誰もがBrainf**kを知っているわけではないので各種記号を簡単にここにまとめておきます。
(下の表は)
命令 | 動作 |
---|---|
+ | 値のインクリメント |
- | 値のデクリメント |
> | ポインタを1つ右に |
< | ポインタを1つ左に |
, | 出力 |
. | 入力 |
[ | 値が0なら対応する] へジャンプ(ループ開始) |
] | 値が0以外なら対応する[ へジャンプ(ループ終了) |
BFって難しそうに見えて実は記号に直結した動作をしていてわかりやすいんです。
書ける気がしてきましたか?
前置きはそこらへんまでにしておいて次は簡略図を書く段階に入っていきましょう。
簡略図
簡略図を描く際に注意する点として
- なるべく簡略化させ、記述量を減らす
- わかりやすい記号を用いる
ことが挙げられます。
今回はこの2点に注意して作成しました。
記号
以下のような記号を用います。
記号 | 意味 |
---|---|
開始/終了 | |
入力: a | |
出力: b | |
代入: c | |
命令ポイントの右/左シフト | |
ループ | |
省略 |
BFには変数はありませんが、図内では変数を用いて書いたほうがわかりやすかったりします。
例
このようなコードを考えます。
>,[<++++>-]<-.
このコードの簡略図は以下のようになります。
コードをネストするよりも簡単になりました。
BFのコードを組み立てたり人に説明する必要があったりする際に大活躍しそうです。
最後に
BFはよく難読言語の1つとして挙げられていましたが、このような簡略化によってとても読みやすくなります。
BFを書く際には活用してみてください。
では。