読者です 読者をやめる 読者になる 読者になる

Brainfuckのインタプリタ

C++

なにかのアドベントカレンダー24日目

f:id:whileD:20161224175612p:plain

嘘です。Spring bootとかGo言語の記事は書きません。最近fuckしか言ってないんでBrainfuckについて書こうと思います。

Brainfuckの仕様はwikipediaとかに書いてますが一応書いておきます。

  • ">" ポインタをインクリメントする
  • ”<” ポインタをデクリメントする
  • ”+” ポインタが指す値をインクリメントする
  • ”-” ポインタが指す値をデクリメントする
  • "." ポインタが指す値を出力する
  • ”,” 入力から1byte読み込んで、ポインタが指す先に代入する
  • "[" ポインタが指す値が0なら、対応する"]"の直後にジャンプする
  • "]" ポインタが指す値が0でないなら、対応する"["にジャンプする

以上です。シンプルですね。以下がC++で実装したコードです。その下がBrainfuckでのHello world!です。

gist29eaacfdaafc11764e18fc18136d8b8c

 

これを実行して

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

を入力すると

Hello, world!

と出力されます。

解説

なし。感じてください。

 

 

それでは皆さんもどんどん脳を犯していってください。

このアドベントカレンダーの最後はかったーさんです。