P15704 [2018 KAIST RUN Spring] Yut Nori

题目描述

掷柶游戏(Yut Game)是一种使用“柶”来进行的著名游戏。掷柶游戏使用 4 个柶、一个柶棋盘和 8 个棋子,两支队伍各 4 个。柶棋盘有 29 个站点,每个站点都有其名称。(图 1) :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/ozjufyc8.png) 图 1:柶棋盘。每个站点都有名称。 ::: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/v8s469d7.png) 图 2:可能的四条路线。 ::: 游戏的目标是从起点站“站起”(cham-meoki)出发,经过棋盘并返回“站起”站,然后离开棋盘。 每位玩家的回合如下: - 投掷 4 个柶。 - 根据柶的结果确定步数。 - 选择一个棋子,并使其在棋盘上移动。 柶有正面和反面。当柶被投掷后,会显示正面或反面。步数等于显示正面的柶的数量。但是,如果所有柶都是反面,则步数为 5。 新的棋子从“站起”站开始(实际上并未放置,但假设棋子已放置),并遵循这些“柶路”(路线)。 基本上,棋子沿第四条路线移动(图 2)。例如,如果你从“站起”站走两步,它会到达“站起-道”站。但在特殊情况下,它会走第一、第二或第三条路线。如果从角落站点(“站起-起”、“站起-起-起”、“站起-起-起-起”、“站起-起-起-起-起”或“站起”站)开始移动,它会选择到达“站起”站的最快路径。 更正式地说,如果棋子从“站起-起”站开始移动,路线会切换到第三条路线。例如,如果你从“站起-起”站走一步,它会到达“站起-起-道”站;走两步则到达“站起-起-起”站。如果你从“站起”站连续走两步,它会到达“站起-起-道”站,但如果你从“站起”站一次性走两步,它会到达“站起-道”站。 同样,如果你从“站起-起-起”站开始,棋子会遵循第二条路线,因此走一步会到达“站起-起-起-道”站,而走两步会到达“站起-起-起-起”站。 此外,如果遵循第三条路线的棋子从“站起-起-起-起”站开始,那么棋子会遵循第一条路线。走一步会到达“站起-起-起-起-起”站,走两步会到达“站起-起-起-起-起-起”站。 棋子按此方式移动,在到达“站起”站后离开棋盘。(这不需要额外的步数)例如,如果你从“站起-起-起-起-起-起”站走两步,它会到达“站起”站,再走一步棋子就会离开棋盘。 如果你从“站起-起-起-起-起-起”站一次性走三步或更多步,它也会离开棋盘。 到目前为止,这只是一个投掷柶以离开棋盘的游戏。然而,还有两条规则使游戏更有趣。 第一条规则是,**一起移动**。如果同一站点上有两个或更多棋子,移动其中一个棋子会使所有棋子一起移动。 第二条规则是,**棋子捕获**。如果对手的棋子位于你的棋子将要移动到的目标站点,则将对手的所有棋子移回初始状态。 你被分配了一项开发掷柶游戏的任务。你需要复现游戏过程。

输入格式

输入的第一行包含一个整数 $N$,表示回合数。 接下来的 $N$ 行,每行包含第 $i$ 回合的信息。第 $i$ 行的信息由棋子和柶的信息组成。 棋子的信息由一个字符给出,是 "ABCDabcd" 中的一个。柶的信息由一个长度为 4 的字符串给出,每个字符是 'B'(反面)或 'F'(正面)。棋子和柶的信息之间用空格分隔。 棋子按大写字母和小写字母分为两队。

输出格式

基本的柶棋盘由以下 $32 \times 32$ 的字符串给出: ``` ..----..----..----..----..----.. .. .. .. .. .. .. | \ / | | \ / | | \ / | | .. .. | .. .. .. .. .. \ / .. | \ / | | \ / | | .. .. | | .. .. | .. \ / .. .. \ / .. | \ / | | .. | | .. | | / \ | .. / \ .. .. / \ .. | .. .. | | .. .. | | / \ | | / \ | .. / \ .. .. .. .. .. | .. .. | | / \ | | / \ | | / \ | .. .. .. .. .. .. ..----..----..----..----..----.. ``` 此字符串由字符 “/\\.|”、空格和换行符组成(不包含引号)。该字符串表示柶棋盘,每个站点由 $2 \times 2$ 的 '.' 字符表示。从左上角字符开始,站点依次为:duet-mo, duet-yut, duet-geol, duet-gae, duet-do, mo, duet-modo, mo-do, chi-do, yut, duet-mogae, mo-gae, chi-gae, geol, bang, chi-geol, gae, sok-yut, saryeo, chi-yut, do, sok-mo, anchi, chi-mo, nal-do, nal-gae, nal-geol, nalyut, 以及 cham-meoki,按行主序读取。 你需要输出棋子是否在棋盘上。你应该用棋子替换站点中的一个 '.' 字符。 棋子 A 或 a 应替换棋盘站点中左上角的 '.',B 或 b 替换右上角的 '.',C 或 c 替换左下角的 '.',D 或 d 替换右下角的 '.'。

说明/提示

### 数据范围 - $1 \leq N \leq 100$ - 每次移动都是合法的;已离开棋盘的棋子不会再出现在棋盘上。 翻译由 DeepSeek V3.2 完成