読みにくかったらすみません。
Brainfu*kで"Hello world!"と表示するプログラムを実行した結果です。
小刻みに動いているのがポインタで、
階段状に増えているのがメモリとなっています。
「Excelだったらグラフだろう!」と勢いだけで作ってみました。
,.の実行はグラフに反映されていないのでどうにかしたいです。
ダウンロード先
2008年6月21日土曜日
2008年6月9日月曜日
Brainfu*kインタプリタをExcelで作りました。
アドレスはここ↓
http://unkun.ikaduchi.com/excel_bf/index.html
Excelの関数だけで、VBAを使用せずに作りました。
簡単な説明は以下。
入力用の文字列はここで設定できる。
アルゴリズム的には
<1>"["が現れたら、その位置をスタックにpush。
<2>"]"が現れたら、スタックをpopして得られた位置をジャンプ先に設定する。
<3>最後に"["の位置をジャンプ先に設定している"]"の位置をジャンプ先に設定する。
シートを見ればわかるが、ステップは1024回まで、メモリ領域は16個までしかない(改造すれば広がる)。
jump_tableシートから、プログラムを順番に実行していき、"["や"]"が現れたら、ジャンプ先を参照してループしたり、しなかったりする。
参照するデータ = 引数、 セルの数式 = 関数、と考えれば、関数型言語であると言ってもいいんじゃないかな?
エレガントなExcelの関数の書き方がわからない・・・。
http://unkun.ikaduchi.com/excel_bf/index.html
Excelの関数だけで、VBAを使用せずに作りました。
簡単な説明は以下。
- mainワークシート
入力用の文字列はここで設定できる。
- jump_tableワークシート
アルゴリズム的には
<1>"["が現れたら、その位置をスタックにpush。
<2>"]"が現れたら、スタックをpopして得られた位置をジャンプ先に設定する。
<3>最後に"["の位置をジャンプ先に設定している"]"の位置をジャンプ先に設定する。
- step_execワークシート
シートを見ればわかるが、ステップは1024回まで、メモリ領域は16個までしかない(改造すれば広がる)。
jump_tableシートから、プログラムを順番に実行していき、"["や"]"が現れたら、ジャンプ先を参照してループしたり、しなかったりする。
- 全体的に
参照するデータ = 引数、 セルの数式 = 関数、と考えれば、関数型言語であると言ってもいいんじゃないかな?
エレガントなExcelの関数の書き方がわからない・・・。
登録:
投稿 (Atom)