📄 一个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 <iostream>
#include <fstream>
#include <string>
#include <vector>
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<<(ostream& out, const Command& cmd)
{
if (cmd.undefine) {
}
#endif
struct Config {
int pointer, state;
};
bool operator==(const Config& left, const Config& right)
{
return ( (left.pointer == right.pointer) &&
}
ostream& operator<<(ostream& out, const Config& config)
{
out << "( " << config.pointer + 1
}
////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -