« 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