どうもAtsu1209です。
実は最近BrainF*ck
とCow
に出会ってしまいました。
おもろそうだなと見ていたら、いつの間にか原理を理解しました。
BrainF*ckとCowとは
口で説明するより、コードを見たほうがいいと思うので例として
Hello
を出力するコードを書きましょう。
BrainF*ck
++++++++[>+++++++++<-]>.>++++++++++[>++++++++++<-]>+.>++++++++++[>++++++++++<-]>++++++++.>++++++++++[>++++++++++<-]>++++++++.>++++++++++[>++++++++++<-]>+++++++++++.
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo MoO MoO MoO Moo MOo MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo
は?と思いますよね? でも原理は意外と簡単です。
BrainF*ck | Cow | 動き |
---|---|---|
> | moO | ポインタを右にずらす |
< | mOo | ポインタを左にずらす |
+ | MoO | ポインタの値を1増やす |
- | MOo | ポインタの値を1減らす |
. | OOM | ポインタの値を出力する(ASCII) |
[ | MOO | ポインタの指す値が0なら、]まで飛ぶ |
] | moo | ポインタの指す値が0でなければ、[まで飛ぶ |
, | oom | 入力から1バイト読み込んで、ポインタが指す値に代入 |
参考
なんで文字が書けるのか?
原理としてはASCIIコード
を使っています。
例えば、A
のASCIIコードは65
なので、+
を65個書いて.
で出力すればいいことになります。 Cowも同様に対応した文字を入れればいいのです。
楽に出力
でも+
やMoO
を何個も書くのはめんどくさいですよね。
そんなときに[
や]
を使います。
おすすめサイト
BrainF*ckを書くのにいいサイトがあります。
ブラウザ上で動かすことができます。
また、メモリーの値やポインタを可視化してくれるので使いやすいです。
最後に
みんなも職場や学校でBrainF*ck使ってみてね
おわり