SP8574 FOUROW - Four in a row
题目描述

你可能听说过双人策略游戏「四子连珠」,在这个游戏中,每位玩家都有 21 枚同色棋子。两位玩家轮流操作,将棋子投入一个有七个槽位的棋盘(每个槽位高为六格),他们的目标是在水平方向、垂直方向或对角线上至少有四枚棋子连成一线。
给定一系列玩家的操作步骤,你需要判断这个游戏是否合法。游戏如果已决出胜者但仍有后续操作,或者某一槽位放入了超过六枚棋子,则被视为无效。如果游戏有效,则判断游戏是否已经结束。如果某位玩家在最后一轮操作中成功连接了四枚棋子,或者棋盘已被全部填满,则游戏结束。判断结束后需要确定是否有获胜者及其身份。如果有获胜者,请打印游戏的最终状态。
如图展示了第一个玩家(黄色棋子)赢得胜利后的游戏最终状态。
输入格式
输入的第一行是一个正整数 $t < 100$,表示有 $t$ 个测试用例。每个测试用例以「Game #n:」开头,$n$ 是当前游戏的编号,从 1 到 $t$。接下来是一串数字,范围是 1 到 7,这表示玩家依次把棋子放入的槽编号。玩家轮流操作,每个游戏最多包含 42 次操作。
输出格式
对于每个测试用例,输出以下五种情况之一:
- Game #n is invalid.
- Game #n is over. There is no winner.
- Game #n is over. The first player won.
- Game #n is over. The second player won.
- Game #n is not over, yet.
如果有获胜者,还需要打印该游戏的最终状态。最终状态最多包含六行,代表棋盘的水平行,此外两端各有一行包含七个破折号。每一行的长度必须正好是七个字符。第一位玩家的棋子用 "x" 表示,第二位玩家的棋子用 "o" 表示,空白格用空格表示。如果某行全部为空白,则该行不需要打印。
为了便于识别获胜的一连串棋子,所有属于获胜组合的棋子需要标记为 "X"(若第一位玩家胜出)或者 "O"(若第二位玩家胜出)。请注意,获胜的棋子可能超过四枚,并且可能有不止一条获胜的连线。
说明/提示
- $1 \le t < 100$
- 每个游戏的最多移动次数为 42。
**本翻译由 AI 自动生成**