这是一个交互式问题。
Fischer 随机象棋(Fischer’s Chess)是一种起始位置从 960 种可能中随机选择的游戏。起始位置满足以下要求:
- 白方棋子被打乱(国王、皇后、两只车、两只象和两只马被放置在第一行)。
- 黑方棋子被放置在第八行,顺序与白方棋子相同。
- 国王被放置在两只车之间(国王和车之间可以有其他棋子)。这是王车易位规则所必需的。
- 白方两只象被放置在不同颜色的格子上。换句话说,一只象位于偶数列,另一只象位于奇数列。
Jill 选择了一个起始位置。Jack 的任务是猜出它。Jack 在棋盘上放置任何合法的起始位置,Jill 会告诉他有多少个白方棋子放置正确。你的任务是通过放置不超过六个位置来帮助 Jack 猜出该位置。
交互
交互过程包含不超过 100 局游戏。在每局游戏开始时,你需要从输入中读取一行,包含单词 “GAME” 和一个整数 $n$,对应游戏编号(从 1 开始)。
当尝试猜测位置时,输出一个由 8 个字符组成的字符串,表示白方棋子的排列。国王用字符 “K” 表示,皇后用 “Q” 表示,车用 “R” 表示,象用 “B” 表示,马用 “N” 表示。作为回应,从输入中读取一行,包含一个 0 到 8 之间的整数:表示放置正确的白方棋子数量。当你读取到数字 8(所有棋子放置正确)或超过猜测次数限制时,游戏结束(在这种情况下,如果程序立即终止,结果将是 “Wrong Answer”;如果程序尝试读取更多输入,结果可能是任何非 OK 的状态)。
在交互结束时,从输入中读取一行,包含单词 “END”。
输出每个位置后,请务必打印换行符并刷新输出缓冲区,否则结果将是 “Idleness Limit Exceeded”。要刷新缓冲区,例如在 C 或 C++ 中可以调用 fflush(stdout),在 Java 中调用 System.out.flush(),在 Pascal 中调用 flush(output),或者在 Python 中调用 sys.stdout.flush()。
在每局游戏中,排列是预先固定且不会改变的。
样例
输入 1
GAME 1 4 3 5 8 END
输出 1
RQKBBNRN RQKNBRNB RKRNBBQN RKRBBQNN