#L6572. 图灵机实验 1:1 进制加法

图灵机实验 1:1 进制加法

题目描述

图灵机图灵机是由数学家艾伦麦席森图灵艾伦·麦席森·图灵191219541912~1954)提出的一种抽象计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人们进行数学运算的抽象模型。

实验背景

它由四部分「硬件」组成:一条无限长的纸带纸带、一个读写头读写头、有限长度的状态转移表状态转移表(有限多个状态状态)、一个状态寄存器状态寄存器纸带纸带可以划分成一个个连续的格子格子,每一个格子格子上有且只有一个字符字符

在此系列实验中,我们要通过设计状态转移表状态转移表来让图灵机图灵机实现特定的功能。

在本题目中,我们对图灵机图灵机有如下约定:

  1. 图灵机图灵机状态状态应是一个长度不超过100100的仅包含可见字符字符字符串字符串,初始状态状态q0q0
  2. 读写头读写头初始位置在纸带纸带的第00格,纸带纸带向正负两个方向无限延伸。纸带纸带每一个格子格子上有且只有一个ASCIIASCII可见字符字符,初始字符字符BB
  3. 图灵机图灵机输入输入纸带纸带的第00格开始,向正向延伸。
  4. 每一时刻,图灵机图灵机将按照状态转移表状态转移表规则规则,根据当前状态状态和当前读写头读写头位置读取的字符字符,对纸带纸带进行写操作,控制读写头读写头的移动并且在状态状态之间跳转。当图灵机图灵机状态状态跳转至qaqa时,认为其停止。
  5. 由于难以判断图灵机图灵机能否停机,测试中图灵机图灵机最多模拟1000010000步。若步骤超过1000010000步,则认为图灵机图灵机不停机。
  6. 状态转移表状态转移表中的一条规则规则是一个五元组,分别为当前状态状态、当前字符字符、写入字符字符读写头读写头移动方向、下一状态状态。当前状态状态、下一状态状态是长度不超过100100的仅包含可见字符字符字符串字符串;当前字符字符和写入字符字符ASCIIASCII可见字符字符读写头读写头移动方向为LLRRNN三个字符字符中的一个,分别表示读写头读写头向左、向右移动和不移动。

每一条状态转移规则状态转移规则占一行,各部分之间用逗号隔开。如,q0q0,11,#,RR,q1q1

题目

一进制加法一进制加法本质上就是数11的个数。假设是nn11mm11相加,那么结果就是n+mn + m11

第一个实验要求设计一个可以完成一进制加法一进制加法图灵机图灵机

输入格式

图灵机图灵机输入输入格式如下:

$(若干 11)+(若干 11)=$

其中,若干11可能为0011

输出格式

图灵机图灵机输出输出格式如下:

$#######(若干 11)BB####$

其中,若干11的位置必须从输入输入中的==号右侧开始,以BB结尾。#为任一ASCIIASCII可见字符字符

样例 11

输入:11+1=11+1= 输出:11+1=11111+1=111B

样例 22

输入:11+1=11+1= 输出:FBc01111FBc01111B

样例 33

输入:+11=+11= 输出:+11=11+11=11B

样例 44

输入:+=+= 输出:+=+= B

样例 55

输入:11+=11+= 输出:11+=1111+=11B$

数据范围与提示

数据保证有大量的图灵机图灵机可以在1000010000步中完成计算。

由于平台限制,我们使用一个伪交互题的方式提交状态转移表状态转移表。请将写好的状态转移表状态转移表用程序通过标准输出输出,在最前和最后分别添加一行---======

程序输出的状态转移表状态转移表示例:

---
$q0$,$1$,$#$,$R$,$q1$
$q1$,$#$,$#$,$R$,$q0$
===

当然,你也可以写一个程序,帮你自动生成状态转移表状态转移表

对于不知道如何使用程序输出状态转移表状态转移表的同学,请按下面的示例,用PythonPython 33语言提交状态转移表状态转移表

print("""---
$q0$,$1$,$#$,$R$,$q1$
$q1$,$#$,$#$,$R$,$q0$
===""")

本题源于中国科学院大学(UCASUCAS)计算机科学导论课实验一。