月亮棋

PDF 视图

提交程序

分数: 1
时间限制: 1.0s
内存限制: 64M

作者:
题目类型

题目描述

「少女」在空中创造出了一个棋盘……

「少女」:这是棋盘,或者说是游戏中的「夜空」。然后两个人手中的棋子代表了你所拥有的「月亮」。

「少女」:两人交替将「月亮」放到「夜空」上,谁的三个月亮最先连成一条线,谁就获胜了。

「少女」:不过,「月亮」是会轮替的,天空中无法存在三个以上的「月亮」。

「少女」:所以当「夜空」中的「月亮」达到一定数量之后,最开始升上的「月亮」就会消失。

你正在和「少女」玩“月亮棋”。现在轮到了你落子,但此时月灵正着急地催促你外出寻找颜料。因此,你想知道:面对当前的残局,你能否在这步落子后立刻赢得游戏?

游戏规则如下:

  • 游戏在一个 \(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

评论

目前没有评论。