QOJ.ac

QOJ

总分: 100 不可用

#5643. 迷宫!

统计

迷宫由一组大小相等的正方形单元格组成,其中每一条边都可能是墙壁或门。迷宫可能没有出口,也可能有多个出口。单元格通常排列成使得它们可以与其他单元格共享边,如下图所示:

(上图中的单元格编号仅供说明使用。)

每个单元格的每一侧都标有导航方向:

对于每个迷宫,起点位于迷宫内的某个位置(例如,上述示例中任何带编号的单元格)。在上述示例中: 迷宫 A 没有出路。 迷宫 B 在单元格 2 的右侧有一个出口(解)。 迷宫 C 在单元格 3 的下方有一个出口,除非起点是单元格 5,在这种情况下没有出路。 迷宫 D 在单元格 6 的上方有一个出口。

例如,使用上面的迷宫 D,如果起点是单元格 9,到达出口的一种可能的方向序列为:right, right, right, right, right, up, up, up

对于本题,你需要编写一个程序来寻找迷宫的出口。你的程序必须以交互方式运行。也就是说,你的程序通过提供一个方向(right, down, leftup)来进行移动,评测系统将返回以下四种响应之一:

1) wall – 表示那里有一堵墙,你不能向该方向移动。 2) ok – 表示那里有一扇门,你可以向该方向移动到相邻的单元格。 3) solved – 表示你已成功找到迷宫的出口。 4) <EOF> – 流上的文件结束符表示你的程序应该退出。需要明确的是,这不是字面字符串 <EOF>,而是当没有更多数据可读时,输入流提供的文件结束指示。

在每次 solved 响应之后,将生成一个新的迷宫,你的程序应该重新开始。此过程重复进行,直到你的程序收到 <EOF> 指示。

如果你的程序确定迷宫没有出路,你应该发送精确的字符串 no way out 而不是方向。如果确实没有出路,将生成一个新的迷宫,你的程序应该重新开始。

如果发生以下任何情况,你的程序将收到 <EOF> 指示: 1) 当评测程序确定你的解法正确时。这可能发生在运行过程中的任何时刻! 2) 即使有出路,你的程序也发送了 no way out。 3) 你的程序在同一个单元格中两次执行相同的移动(方向)。

输入格式

这是一个交互式程序。你接收到的输入是你所生成输出的函数。所有输入和输出字符串都必须以换行符结尾。你不应该发送额外的空行。

程序启动时必须做的第一件事是发送它的第一次移动(up, down, rightleft),后跟一个换行符。然后它将等待标准输入上的换行符终止的响应。响应将是 walloksolved<EOF>(文件结束)指示之一。然后,你的程序将根据它收到的响应进行下一次移动,如上所述。此过程将重复进行,直到你的程序收到 <EOF> 指示。

样例

(用户输出为 粗体,计算机评测输出为 斜体。此样例运行与上述示例无关。)

样例 1

down
*wall*
right
*wall*
left
*wall*
up
*ok*
right
*ok*
down
*ok*
down
*wall*
right
*wall*
left
*wall*
up
*ok*
right
*solved*
right
*ok*
up
*ok*
up
*ok*
up
*wall*
right
*solved*
right
*<EOF>*

或者逐个上传:

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.