« C で tail に queue は不要 | メイン | brainf*ck でマジメに素数探索 »
2006年06月28日
brainf*ck で計算機
竹迫さんのbpencodeを皮切りに、brainf*ck ネタが盛り上がっています。Brainf*ck の基本的な処理については英語版 Wikipedia: Brainf*ck に書いてあるのですが、 if ~ then ~ else ~ endif については、なぜか記載がありませんでした。
どうやって実現すればいいのかな、と考えていたのですが、
# p[0]=cond, p[1]=0 の場合
>+<[[-]>-< then-clause ]>[-< else-clause >]<
でいいことに気づきました。というわけで、実証を兼ねて計算機を作ってみることに。
,>>,<,
>>++++++[<<-------->>-]
+++++[<-------->-]<---
>+<[[-]>-<
<[<->-]>
]>[-<
<[<+>-]>
>]<
<<.
以上です。"5+2" => 7, "5-3" => 2 等注、一桁の負でない整数の範囲内での加算減算に対応しています。
弾さんの処理系他でお楽しみください。
PS. 次はデータ構造のネタを書こうと思います (たぶん...)2006/06/30 追記: 書きました→「Brainf*ck で動的リスト」
注: 空白をあけずに、[数字][演算子][数字] と3文字で入力してください
投稿者 kazuho : 2006年06月28日 11:52
トラックバック
このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/666