/SKI_combinator_emulator

SKIコンビネータの計算をチューリングマシンを用いて行うものです

Primary LanguageC++MIT LicenseMIT

SKI_combinator_emulator

SKIコンビネータの計算をチューリングマシンを用いて行うものです

チューリングマシンエミュレータの使用法

コマンドライン引数としてチューリングマシンの状態遷移規則を与え、プログラムの標準入力としてチューリングマシンのテープの初期状態を1行で与えると、チューリングマシンの挙動をエミュレートします。

チューリングマシンの状態遷移規則は1行に1つ遷移前の状態, テープから読み込んだ文字, テープに書き込む文字, テープの読み取り機が動く方向, 次の状態のフォーマットによって記述する必要があります。 また、空行と#から始まるコメント行も認められています。

状態を表すのには空白、カンマを除く任意の文字を使うことができ、開始状態はq_0, 受理状態はq_acceptです。

また、テープから読み込んだ文字・テープに書き込む文字は1文字である必要はありませんが、プログラムの標準入力として与えられたテープの初期状態は1文字ずつ解釈されます。

エミュレータの挙動はこちらのサイトを参考にしています(SKIコンビネータのエミュレータはこちらのサイトでも動作します)。

SKIコンビネータエミュレータの使用法

run.shをこのディレクトリがカレントディレクトリのときに実行すると、エミュレータが起動します。

S, K, X, (, )のみからなる1行の文字列を入力として受け取ります。

Xは関数として扱われますが、決して評価されません。計算結果が正しいか確認するのに使用することができます。

Iコンビネータは対応していません。(SKK)を代わりに使ってください。