月亮棋
PDF 视图题目描述
「少女」在空中创造出了一个棋盘……
「少女」:这是棋盘,或者说是游戏中的「夜空」。然后两个人手中的棋子代表了你所拥有的「月亮」。
「少女」:两人交替将「月亮」放到「夜空」上,谁的三个月亮最先连成一条线,谁就获胜了。
「少女」:不过,「月亮」是会轮替的,天空中无法存在三个以上的「月亮」。
「少女」:所以当「夜空」中的「月亮」达到一定数量之后,最开始升上的「月亮」就会消失。
你正在和「少女」玩“月亮棋”。现在轮到了你落子,但此时月灵正着急地催促你外出寻找颜料。因此,你想知道:面对当前的残局,你能否在这步落子后立刻赢得游戏?
游戏规则如下:
- 游戏在一个 \(3 \times 3\) 的网格(「夜空」)上进行,行和列的编号均为 \(1\) 到 \(3\)。
- 现在轮到你落子。已知当前你和「少女」在场上各自拥有 \(n\) 个「月亮」(\(0 \le n \le 3\)),且给定这些「月亮」的坐标以及它们落下的先后顺序。
- 你必须选择一个没有被任何「月亮」占据的空位落下新子。
落子后的结算规则:
如果 \(n < 3\):新「月亮」正常落下,场上没有任何「月亮」消失。
如果 \(n = 3\):在你落下新「月亮」的同时,你最早落下的那个「月亮」会立刻消失(即该位置重新变为空位)。
结算完成后,如果你场上的「月亮」恰好有 \(3\) 个,且它们占据了同一行、同一列或同一条对角线,则判定你立刻获胜。
请判断是否存在一个合法的空位,使得落子并结算后你能立刻获胜。
- 如果存在,输出该空位的坐标。若有多个能获胜的空位,输出行号最小的;若行号相同,则输出列号最小的。
- 如果无论下在哪里都无法立刻获胜,则输出
Columbina Hyposelenia。
输入格式
第一行包含一个整数 \(T\) (\(1 \le T \le 10^5\)),表示测试用例的数量。
对于每组测试数据:
- 第一行包含一个整数 \(n\) (\(0 \le n \le 3\)),表示当前双方在棋盘上各自拥有的棋子数量。
- 随后的 \(n\) 行,每行包含两个整数 \(r\) 和 \(c\) (\(1 \le r, c \le 3\)),表示你在场上的棋子坐标。这 \(n\) 个坐标严格按照落子时间从先到后(从早到晚)的顺序给出。
- 最后的 \(n\) 行,每行包含两个整数 \(r\) 和 \(c\) (\(1 \le r, c \le 3\)),表示对手(「少女」)在场上的棋子坐标。这 \(n\) 个坐标同样按照落子时间从先到后(从早到晚)的顺序给出。
注:题目保证输入的局面是一个合法的未结束游戏残局,且同一位置上最多只有一个棋子。
输出格式
对于每组测试用例,输出一行:
- 如果存在能让你立刻获胜的落子位置,输出两个整数 \(r\) 和 \(c\),表示获胜空位的行号和列号(中间用空格隔开)。
- 如果不存在这样的位置,输出字符串
Columbina Hyposelenia。
样例输入
2
2
1 1
1 2
3 1
3 2
1
2 2
1 1
样例输出
1 3
Columbina Hyposelenia
评论