计算一局 Hex / Polygon 游戏的结果。
这种抽象棋类游戏名为 Hex / Polygon / CON-TAC-TIX,规则相当简单,实际玩起来却很复杂。 两名玩家在一个由六边形格子组成的平行四边形上放置棋子。 先把自己一方的棋子连到对边的一方获胜。 平行四边形的四条边由两名玩家平分(也就是说,一名玩家分到一条边以及和它正对的那条边,另一名玩家分到剩下的两条边)。
你的目标是编写一个程序,给定棋盘的一种简单表示,计算出获胜者(或者没有获胜者)。 注意,并非每局游戏都“公平”。 (例如,双方棋子数量可能不相等,或者棋盘的宽和高可能不一样。)
棋盘看起来像这样:
. O . X .
. X X O .
O O O X .
. X O X O
X O O O X
“玩家 O”从上往下走,“玩家 X”从左往右走。
在上面的例子中,O 从左到右连成了一条线,但没有人获胜,因为 O 没有把上下两边连起来。
你可能会发现,有些测试用例看起来并不公平。 不过,这种不公平可能是有道理的。 例如,常见的做法是在棋盘上的固定位置给年幼或初学的玩家额外多放 n 个棋子,因此在一局本来完全合规的棋局中,双方的棋子数量可能对不上。
无论如何,本练习只关心在一局可以有各种参数的棋局中判断出胜者,比如棋盘长度和额外棋子。 它不关心棋局的其他任何状态,比如谁在哪儿落子、什么时候落子,或者轮到谁走。
所以,遇到那些看似不公平的棋局,不必感到困惑。