P13281 [GCJ 2013 Qualification] Tic-Tac-Toe-Tomek

题目描述

**Tic-Tac-Toe-Tomek** 是一种在 $4 \times 4$ 的方形棋盘上进行的游戏。游戏开始时棋盘是空的,仅可能存在一个特殊符号 `'T'` 在棋盘上的某个位置。游戏有两名玩家:X 和 O,他们轮流进行移动,玩家 X 先手。每一次移动时,玩家都必须将自己的符号放在棋盘上的一个空格中。玩家 X 的符号为 `'X'`,玩家 O 的符号为 `'O'`。 每次玩家落子后,如果棋盘上出现了一行、一列或一条对角线满足以下任意一个条件,则该玩家获胜,游戏立即结束: - 该行(列或对角线)中有连续的 $4$ 个玩家自己的符号; - 或者该行(列或对角线)中有连续的 $3$ 个玩家自己的符号和一个 `'T'` 符号。 若未出现上述情况,则游戏继续,由对方玩家进行下一步操作。如果棋盘全部填满且没有人获胜,则游戏以平局结束。具体请参照给出的样例输入和输出。 给定一个当前游戏状态的 $4 \times 4$ 的棋盘描述,棋盘中字符可能为 `'X'`, `'O'`, `'T'` 和 `'.'`(其中 `'.'` 表示空格),你的任务是判断当前游戏状态,可能的状态包括: - `"X won"`(游戏已结束,X 胜利) - `"O won"`(游戏已结束,O 胜利) - `"Draw"`(游戏结束,平局) - `"Game has not completed"`(游戏尚未结束) 注意:即使游戏结局已经可以明确预见,只要棋盘中存在空格且游戏尚未实际结束,都必须输出 `"Game has not completed"`。

输入格式

输入的第一行包含一个整数 $T$,表示测试用例的数量。接下来是 $T$ 个测试用例。每个测试用例包括 $4$ 行,每行包含 $4$ 个字符,每个字符都是 `'X'`, `'O'`, `'.'` 或 `'T'`(注意这里单引号仅作说明,不实际出现)。每个测试用例后面有一个空行。

输出格式

对于每个测试用例,输出一行内容为 `"Case #x: y"`,其中 $x$ 为测试用例的编号(从 $1$ 开始),$y$ 为上述的可能游戏状态之一。注意,输出必须严格按照给定的状态字符串格式。特别注意字母 `"O"`(大写字母)和数字 `"0"` 的区别,以及空格等细节。

说明/提示

**样例说明** 虽然你的浏览器可能无法显示样例输入中最后一个测试用例后的空行,但实际输入文件中确实存在该空行。 **限制条件** - 题目给出的棋盘状态保证是通过正常进行 Tic-Tac-Toe-Tomek 游戏所能达到的状态。 **小数据集(10 分,测试集 1 - 可见)** - $1 \leq T \leq 10$ **大数据集(20 分,测试集 2 - 不可见)** - $1 \leq T \leq 1000$ 翻译由 ChatGPT-4.5 完成。