SKIコンビネータの計算をチューリングマシンを用いて行うものです
コマンドライン引数としてチューリングマシンの状態遷移規則を与え、プログラムの標準入力としてチューリングマシンのテープの初期状態を1行で与えると、チューリングマシンの挙動をエミュレートします。
チューリングマシンの状態遷移規則は1行に1つ遷移前の状態
, テープから読み込んだ文字
, テープに書き込む文字
, テープの読み取り機が動く方向
, 次の状態
のフォーマットによって記述する必要があります。
また、空行と#から始まるコメント行も認められています。
状態を表すのには空白、カンマを除く任意の文字を使うことができ、開始状態はq_0
, 受理状態はq_accept
です。
また、テープから読み込んだ文字・テープに書き込む文字は1文字である必要はありませんが、プログラムの標準入力として与えられたテープの初期状態は1文字ずつ解釈されます。
エミュレータの挙動はこちらのサイトを参考にしています(SKIコンビネータのエミュレータはこちらのサイトでも動作します)。
run.sh
をこのディレクトリがカレントディレクトリのときに実行すると、エミュレータが起動します。
S
, K
, X
, (
, )
のみからなる1行の文字列を入力として受け取ります。
X
は関数として扱われますが、決して評価されません。計算結果が正しいか確認するのに使用することができます。
Iコンビネータは対応していません。(SKK)
を代わりに使ってください。