在这个练习中,你要实现一个程序,判断一局井字棋的状态。 (这个游戏也叫“noughts and crosses”或“Xs and Os”。)
游戏在一个 3×3 的网格上进行。
玩家轮流在网格上放置X和O。
当一方玩家在网格的一行、一列或一条对角线上连放三个标记而获胜时,或者整个网格被填满时,游戏结束。
在这个练习中,我们假设X先手。
你的任务是判断给定的棋局处于哪种状态。
游戏可能有 3 种状态:
如果给定的棋盘无效,就抛出适当的错误。
如果棋盘满足以下条件,就是无效的:
X先手)。 | |
X | |
___|___|___
| |
| X | O
___|___|___
| |
O | X |
| |
| |
X | O | X
___|___|___
| |
X | X | O
___|___|___
| |
O | X | O
| |
| |
X | X | X
___|___|___
| |
| O | O
___|___|___
| |
| |
| |
| |
O | O | X
___|___|___
| |
| |
___|___|___
| |
| |
| |
| |
X | X | X
___|___|___
| |
O | O | O
___|___|___
| |
| |
| |
棋盘用一个以 null 结尾的字符串表示,每一行末尾都有一个换行符。
例如:"X \n XO\nOX \n"
| 寄存器 | 用途 | 类型 | 说明 |
|---|---|---|---|
$a0 |
输入 | 地址 | 以 null 结尾的输入字符串 |
$v0 |
输出 | 整数 | 游戏状态(1 = ongoing,2 = draw,3 = win,-1 = error) |
$t0-9 |
临时 | 任意 | 用于临时存储 |