Brainfuckのインタプリタ
なにかのアドベントカレンダー24日目
嘘です。Spring bootとかGo言語の記事は書きません。最近fuckしか言ってないんでBrainfuckについて書こうと思います。
Brainfuckの仕様はwikipediaとかに書いてますが一応書いておきます。
- ">" ポインタをインクリメントする
- ”<” ポインタをデクリメントする
- ”+” ポインタが指す値をインクリメントする
- ”-” ポインタが指す値をデクリメントする
- "." ポインタが指す値を出力する
- ”,” 入力から1byte読み込んで、ポインタが指す先に代入する
- "[" ポインタが指す値が0なら、対応する"]"の直後にジャンプする
- "]" ポインタが指す値が0でないなら、対応する"["にジャンプする
以上です。シンプルですね。以下がC++で実装したコードです。その下がBrainfuckでのHello world!です。
gist29eaacfdaafc11764e18fc18136d8b8c
これを実行して
+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.
を入力すると
Hello, world!
と出力されます。
解説
なし。感じてください。
それでは皆さんもどんどん脳を犯していってください。
このアドベントカレンダーの最後はかったーさんです。