QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 256 MB 満点: 100

#3827. 艾伦·图灵

統計

Alan Mathison Turing 是一位英国计算机科学家和数学家。他是理论计算机科学的先驱,提出了图灵机,这是一种由计算数学模型定义的抽象机器。

图灵机的工作原理如下:它拥有一定数量的状态、一条无限长的纸带,纸带上可以写入特定的符号集,并且在特定的转换规则集下运行。从初始状态开始,磁头指向某个位置,根据当前状态和磁头指向的纸带上的符号,图灵机可以决定磁头移动的方向(或停机),以及要在纸带上写回什么符号。

一个有趣的问题(停机问题)是:是否可以确定某台图灵机在给定的输入(纸带上的初始符号)下最终会停机,还是会永远运行下去。事实证明,这是无法确定的。然而,仍然有一些好消息!完全可以证明一台图灵机是否会在 10 步之内停机。作为给你的挑战,我们希望你告诉我们答案。

输入格式

输入的第一行是一个整数 $T$ ($T \le 20$),表示测试用例的数量。

每个测试用例首先给出图灵机的描述。它以一个整数 $n$ ($1 \le n \le 10$) 开头,表示该图灵机中的状态数量。其中状态 1 是起始状态,状态 $n$ 是唯一的停机状态,即图灵机进入该状态后会停机。

接下来的 $n - 1$ 行是状态 1 到 $n - 1$ 的转换规则。注意,由于状态 $n$ 是停机状态,它没有转换规则。为了简化问题,本题中的图灵机仅使用三种符号,即 0、1 和 2。每行转换规则包含 3 个以空格分隔的元组 $(x, y, z)$,其中 $x$ 表示图灵机将转换到的下一个状态,$y$ 表示磁头移动的方向(1 表示向右,-1 表示向左),最后 $z$ 表示应该写回纸带上的符号。注意,磁头会先写回符号,然后移动。对于这 $n - 1$ 行中的第 $i$ 行,这 3 个元组分别代表状态 $i$ 在读取符号 0、1 和 2 时的转换。例如,第五行的第二个元组代表状态 5 在磁头指向符号 1 时的转换规则。

之后是一个整数 $m$ ($m \le 100$),表示查询的数量。每个查询占一行,其中第一个数字 $x$ ($0 \le x \le 10$) 是输入中的符号数量,随后是 $x$ 个符号。这些符号将依次写入纸带,初始磁头位置指向第一个符号。输入中仅会出现符号 0 和 1,因为符号 2 实际上代表图灵机中的空白符号。因此,你可以假设输入之前和输入之后纸带上的每个符号都是 2。例如,输入 3 1 0 0 在纸带上实际上看起来是:“... 2 2 2 1 0 0 2 2 2 ...”,其中磁头最初指向符号 1,且纸带两端的符号 2 向两侧无限延伸。

输出格式

对于每个测试用例,首先打印 “Machine #N:”,其中 $N$ 是测试用例的编号。然后对于每个查询,如果机器在 10 步内停机,则在一行中打印 “yes”,否则打印 “no”。

样例

样例输入 1

3
3
(2, 1, 0) (2, 1, 1) (2, 1, 2)
(3, 1, 0) (1, -1, 0) (1, -1, 2)
3
3 1 0 0
2 1 1
1 1
4
(2, 1, 1) (3, 1, 0) (1, -1, 2)
(1, -1, 0) (1, -1, 1) (1, -1, 2)
(2, 1, 1) (2, 1, 0) (4, -1, 2)
2
3 0 0 0
5 0 0 0 0 0
2
(1, -1, 2) (2, -1, 0) (1, 1, 2)
2
2 0 0
1 1

样例输出 1

Machine #1:
yes
yes
no
Machine #2:
yes
no
Machine #3:
no
yes

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.