图灵机模拟程序源代码
源代码在线查看: 一个turing machine的模拟程序.txt
/*
一个Turing Machine的模拟程序
该程序从turing.txt文件中读入图灵机,然后从屏幕读入输入数据
输入数据按字符串读入,每行一个输入,按ctrl-z 结束输入。
接着将运行结果输出到屏幕。如果发生死锁(死循环),会自动判断。
输入文件turing.txt的格式是,每一行表示TM的表格的某一行
如果某个格子不存在,该位置上是一个*,如果某个状态不存在,该位置上也是一个*
例如,对于TM = S+的输入文件turing.txt内容为:
1L2 1R1
0R3 1L2
对于TM = P- 输入文件为:
* 0R2
103 *
下面这个TM将输入n复制一份
0R6 0R2
0R3 1R2
1L4 1R3
0L5 1L4
1R1 1L5
下面这个TM把输入n变为2n
0R* 0R2
0R3 1R2
1R4 1R3
1L5 *
0L6 1L5
0R1 1L6
预编译参数 TRACE_EXECUTION 可以控制是否输出执行过程
如果将其注释掉再编译就可以不显示TM执行的中间过程。
*/
#define TRACE_EXECUTION
#include
#include
#include
#include
using namespace std;
const char* TM_FILE = "turing.txt";
const int MAX_STATE = 100;
struct Command {
char data, movement;
};
istream& operator>>(istream& in, Command& cmd)
{
char ch;
}
#ifdef DEBUG
ostream& operator {
if (cmd.undefine) {
}
#endif
struct Config {
int pointer, state;
};
bool operator==(const Config& left, const Config& right)
{
return ( (left.pointer == right.pointer) &&
}
ostream& operator {
out }
////////////////////////////////////////////////////////////