柶戏(Yut Nori)是使用柶(Yut)的最著名的棋盘游戏之一。柶戏由 4 个柶、一个柶戏棋盘和 8 个棋子组成:每个队伍 4 个棋子。柶戏棋盘有 29 个点(stations)。每个点都有自己的名字。(图 1)
图 1:柶戏棋盘。每个点都有其名称。
图 2:四种可能的路线。
游戏的目标是从 cham-meoki 出发,在棋盘上移动,最后返回 cham-meoki 并离开棋盘。
在每个回合开始时,一名玩家:
- 投掷 4 个柶;
- 根据投掷结果确定前进的步数;
- 选择一个棋子并在棋盘上移动。
每个柶都有正面和背面。投掷柶时,会显示其正面或背面。前进的步数等于正面向上的柶的数量;特别地,如果所有柶都是背面向上,则步数为 5。
每个棋子都从 cham-meoki 开始(它实际上并未放置在棋盘上,但假设棋子放置在那里),并沿着柶路(Yut-gil,即路线)移动。
基本上,棋子沿着第四种路线移动(图 2)。例如,如果一个棋子从 yut 移动两步,它将到达 duet-do。但在特殊情况下,它们会经过第一、第二或第三种路线。如果一个棋子从角落(mo、duet-mo、bang、chi-mo 或 cham-meoki)出发,它会选择通往 cham-meoki 的较快路径。
更具体地说,如果一个棋子在 mo 开始移动,路线将切换为第三种。例如,如果它从 mo 移动一步,它会到达 mo-do;从 mo 移动两步,它会到达 mo-gae。如果它从 yut 分两次各移动一步,它会到达 mo-do,但如果你在一次移动中从 yut 移动两步,它会到达 duet-do。
同样,如果它从 duet-mo 开始移动,它会遵循第二种路线,因此移动一步会到达 duet-modo,而移动两步会到达 duet-mogae。
此外,如果遵循第三种路线的棋子从 bang 开始移动,那么它将开始遵循第一种路线。移动一步会到达 saryeo;移动两步会到达 anchi。
沿着这些路线移动,棋子在返回 cham-meoki 后再移动一步即可离开棋盘。这不需要额外的回合。例如,如果你从 nal-yut 移动两步,它会到达 cham-meoki 然后离开棋盘。类似地,从 nal-geol 移动 3、4 或 5 步也算作离开棋盘。
到目前为止,这只是一个关于投掷柶以离开棋盘的游戏。为了让游戏更有趣,还有另外两条规则。
第一条规则是同动(搭子)。如果同一名玩家的两个或多个棋子位于同一个点上,那么只需移动其中一个棋子,就会使所有其他棋子一起移动。
第二条规则是吃子。如果对手的棋子位于你棋子的下一个目的地,那么该点上的所有对手棋子都将回到初始状态。
你的任务是开发这个柶戏游戏。给定一系列回合,输出棋盘的最终状态。
输入格式
输入的第一行包含一个整数 $N$,表示回合数。($1 \le N \le 100$)
在接下来的 $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 应该替换右下角的 .。
文件 URL:http://run.kaist.ac.kr/contest18s/Y.zip
基础棋盘文件:yut_board.txt
样例输入 1:samp1.in,samp1.out
样例输入 2:samp2.in,samp2.out