**## 图灵机XN*2,python实现
内容:
对于XN+1或XN*2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。 用C或C++或java或python语言实现程序解决问题。
1).程序风格良好(使用自定义注释模板)
2).提供友好的输入输出,并进行输入数据的正确性验证。
步骤:
-
算法分析
1.1输入一个十进制数转化为二进制添加逗号
1.2二进制转化为拓展码 (1–10;0–0;逗号–110)
1.3图灵机操作拓展码,输出新的输出态度
1.4新的输出态转化为拓展码(按照给定的表)
0 0—>0 0R
0 1—>1 0R
1 0—>0 1R
1 1—>10 0R
10 0—>11 1R
11 0—>0 1STOP
1.5转化为十进制 -
概要设计(包括数据结构及算法绘制流程图或伪代码表示)
进行进制转换,将二进制转化为十进制
将二进制转化为拓展码,0—0;1—10;逗号–110
然后将拓展码根据图灵机XN*2根据对应的指令表转化为新的输出态和新的内态。利用if-elif实现。
将得到的输出态根据拓展码转化为十进制 0—0;10—1;110—逗号,最后转化为十进制表示。
-
测试(设计测试用例或测试代码的设计与实现,测试结果截屏))
-
调试(对测试出的问题进行调试,界面截屏,调试修正编码)
监控内态和输出态的写入是否正确,符合预期的效果。
- 心得体会(关键问题的解决思路及步骤总结)
对于列表套列表时将里边的列表当作是外边的列表元素处理,将里边的列表剥离出来时只需要另新建变量使其等于外边列表的其所处的索引。
python函数之间传值时可能会出现值变化的情况,此时一定要注意传参顺序,和传参的数据类型。另外,python可将函数作为参数传入另一个函数,此时就需要注意函数是否被重复调用。