CF1557E Assiut Chess
题目描述
这是一个交互题。
ICPC Assiut 社区决定举办一场独特的国际象棋比赛,你被选中来操控皇后,追捕隐藏的国王,而 ICPC Assiut 社区的一名成员则操控这个国王。
你们将在一个 $8\times8$ 的国际象棋棋盘上进行对抗,棋盘的行从上到下编号,列从左到右编号,位于第 $x$ 行第 $y$ 列的格子记作 $(x, y)$。
在你的回合,你可以将皇后移动到同一行、同一列或任意一条对角线上的任意格子。例如,如果皇后在 $(4, 5)$,你可以移动到 $(q_1, 5)$、$(4, q_1)$、$(q_1, 9-q_1)$ 或 $(q_2, q_2+1)$,其中 $1 \le q_1 \le 8$ 且 $q_1 \ne 4$,$1 \le q_2 \le 7$ 且 $q_2 \ne 4$。注意,皇后不能停留在原地。
在国王的回合,国王可以向“右”、“左”、“上”、“下”、“右下”、“左下”、“左上”或“右上”移动,但不能离开棋盘。国王不能移动到与皇后处于同一行、同一列或同一对角线的格子(包括皇后的位置)。例如,如果国王在 $(4, 5)$,他可以移动到 $(4+k_1, 5+k_2)$,其中 $-1 \le k_1, k_2 \le 1$,且 $(k_1, k_2) \ne (0, 0)$。
在游戏开始时,你需要将皇后放在棋盘上的任意位置,这一步每局只进行一次。之后,国王会被秘密放置在除皇后位置外的任意格子,你并不知道国王的位置。然后,国王和皇后轮流行动,国王先走。每次国王移动后,你只会得到国王移动的方向(如“Right”、“Down”、“Up-Left”等)。之后,你需要宣布皇后要移动到的格子。如此往复,直到你获胜或用尽所有移动次数。
如果国王没有可行的移动,你获胜。如果在皇后移动 $130$ 次后国王仍有可行的移动,你失败。
输入格式
第一行包含一个整数 $t$($1 \le t \le 60$)——表示测试用例的数量。
输出格式
对于每个测试用例,你应立即输出皇后的初始位置。如果你将皇后放在了国王的位置,你会立即获胜。
之后,你最多可以进行 $130$ 次移动。每次移动的格式为 $x\ y$,其中 $x$ 和 $y$ 是两个整数($1 \leq x, y \leq 8$),表示皇后新的行和列。你的移动必须是合法的皇后移动。
在初始放置皇后后以及每次移动后,你会收到一个字符串 $s$,表示国王的移动方向。它会是以下之一:“Right”、“Left”、“Up”、“Down”、“Down-Right”、“Down-Left”、“Up-Left”、“Up-Right”,或者如果你获胜则为“Done”。遇到“Done”时,表示该测试用例结束。
每次输出后不要忘记输出换行并刷新输出缓冲区,否则会收到“Idleness limit exceeded”判罚。具体做法如下:
- C++:fflush(stdout) 或 cout.flush()
- Java:System.out.flush()
- Pascal:flush(output)
- Python:stdout.flush()
- 其它语言请查阅相关文档
如果你在任意时刻进行了非法操作或每个测试用例尝试移动超过 $130$ 次,游戏会立即终止并判为 Wrong Answer。
说明/提示
在示例中,隐藏的国王起始于 $(8, 8)$。游戏过程如下:
 
由 ChatGPT 4.1 翻译