アドレスはここ↓
http://unkun.ikaduchi.com/excel_bf/index.htmlExcelの関数だけで、VBAを使用せずに作りました。
簡単な説明は以下。
Brainfu*kのプログラムを書き込んで、実行結果を確認する。
入力用の文字列はここで設定できる。
Brainfu*kのソースコードを解析して、対応する"["と"]"の位置をそれぞれ、ジャンプ先に設定する。
アルゴリズム的には
<1>"["が現れたら、その位置をスタックにpush。
<2>"]"が現れたら、スタックをpopして得られた位置をジャンプ先に設定する。
<3>最後に"["の位置をジャンプ先に設定している"]"の位置をジャンプ先に設定する。
brainfu*kのソースコードをステップ実行する。
シートを見ればわかるが、ステップは1024回まで、メモリ領域は16個までしかない(改造すれば広がる)。
jump_tableシートから、プログラムを順番に実行していき、"["や"]"が現れたら、ジャンプ先を参照してループしたり、しなかったりする。
無限に広がるワークシートがあれば、チューリングマシンと同等の計算力があると思う。
参照するデータ = 引数、 セルの数式 = 関数、と考えれば、関数型言語であると言ってもいいんじゃないかな?
エレガントなExcelの関数の書き方がわからない・・・。