BrainCrash
ナビゲーションに移動
検索に移動
BrainCrash(ブレインクラッシュ)は、プログラミング言語のひとつ。Brainfuckに4つの命令と新たな仕様が追加されている。
命令[編集]
Brainfuckの8つにビット演算子4つを加えた以下の12個が実行可能である。これ以外はコメントとして無視される。
命令 | 実行内容 |
---|---|
> | ポインタをインクリメント(ポインタの位置を1つ進める) |
< | ポインタをデクリメント(ポインタの位置を1つ戻す) |
+ | 現在ポインタが指している値をインクリメント(+1する) |
- | 現在ポインタが指している値をデクリメント(-1する) |
. | 現在ポインタが指している値(の文字コード番号に該当する文字)を出力 |
, | 現在ポインタが指している値に、入力から読み込んだ1バイトを代入 |
[ | 現在ポインタが指している値が0であれば、対応する「]」の直後にジャンプ |
] | 現在ポインタが指している値が0でなければ、対応する「[」の直後にジャンプ |
| | ポインタの位置を1つ進め、もともとポインタが指していた値と現在ポインタが指している値をビットOR演算し、現在ポインタが指している値に代入 |
& | ポインタの位置を1つ進め、もともとポインタが指していた値と現在ポインタが指している値をビットAND演算し、現在ポインタが指している値に代入 |
~ | 現在ポインタが指している値をビットNOT演算し、現在ポインタが指している値に代入 |
^ | ポインタの位置を1つ進め、もともとポインタが指していた値と現在ポインタが指している値をビットXOR演算し、現在ポインタが指している値に代入 |
仕様[編集]
Brainfuckにはなかった以下の仕様が追加されている。
- メモリの初期値には、0番地より順に 72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33 が積まれる。
- またプログラム終了時、現在ポインタが指している値から順に、ポインタの値が0になるまでポインタを進めて出力する。
例[編集]
初期値として「Hello, world!」に相当する文字コード番号がメモリに積まれ、プログラム終了時に自動的にそれらが出力される。そのため、ソースコードに何も書かないことにより「Hello, world!」を出力するプログラムが作れる。
他のプログラムを書く場合[編集]
この言語でHello, world!以外のプログラム(例えば「Enpedia」を出力するプログラム)を書きたい場合は以下のような方法が考えられる。
初期値に干渉しない場所までポインタを進める
>>>>>>>>>>>>>+++++++[>++++++++++<-]>-.<+++++++[>++++++<-]>-.++.-----------.-.+++++.--------
初期値を全て0に戻す
[-]&&&&&&&&&&&&&+++++++[>++++++++++<-]>-.<+++++++[>++++++<-]>-.++.-----------.-.+++++.--------
初期値をうまく利用し、最後に現在のポインタ位置のメモリを0に戻す
---.>>>++.++.<<.-.>---.<---.[-]
外部リンク[編集]
- BrainCrash(アーカイブ)