AT_arc012_3 [ARC012C] 五目並べチェッカー
题目描述
高桥君非常喜欢五目并。
五目并是一种在 $19 \times 19$ 的棋盘上,双方轮流各下一枚棋子,先将自己的棋子在纵向、横向或斜向上连成 $5$ 个或以上者获胜并结束游戏的规则。
游戏总是由黑方先手。
高桥君和朋友青木君下五目并时,不小心睡着了。
高桥君怀疑在他睡觉期间青木君做了手脚,因此想检查棋盘状态是否有异常。
请你编写程序,判断当前五目并棋盘状态是否正常。
这里的异常状态指的是:
- 某一方已经满足胜利条件,但另一方还继续下了棋。
- 双方下子的数量出现了不可能的情况。
输入格式如下,从标准输入读取。
> $b_{1,1}\ b_{2,1}\ \ldots\ b_{19,1}$
> $b_{1,2}\ b_{2,2}\ \ldots\ b_{19,2}$
> $:$
> $:$
> $b_{1,19}\ b_{2,19}\ \ldots\ b_{19,19}$
- 输入共 $19$ 行。
- 第 $i$ 行第 $j$ 个字符 $b_{i,j}$ 表示棋盘第 $i$ 行第 $j$ 列的格子内容。
- $b_{i,j}$ 只可能是 `o`、`x` 或 `.` 三种字符。
- `o` 表示该格有黑子。
- `x` 表示该格有白子。
- `.` 表示该格为空。
如果棋盘状态正常,输出 `YES`,否则输出 `NO`。
输出到标准输出,末尾需换行。
```
...................
...................
...................
...................
....x......o.......
...................
...................
.......o....o......
...................
........x..........
..............o....
...................
.......x...........
...................
...................
...................
...................
...................
...................
```
```
YES
```
- 黑方下了 $4$ 子,白方下了 $3$ 子。
- (原描述有误,已修正。)
```
...................
...................
...................
...................
....x......o.......
...................
...................
.......o....o......
...................
........x..........
..............o....
...................
.......x...........
...................
...................
.........o.........
...................
...................
...................
```
```
NO
```
- 黑方下了 $5$ 子,白方下了 $3$ 子。
- 黑方多下一子,属于异常状态。
```
...................
...................
...................
...................
...................
...................
...................
...................
........ooooo......
.........xxxx......
........x..........
...................
...................
...................
...................
...................
...................
...................
...................
```
```
NO
```
- 黑方下了 $5$ 子,白方下了 $5$ 子。
- 一方已经满足胜利条件时,游戏应立即结束,因此黑方满足胜利条件时还继续下棋属于异常状态。
- (原描述有误,已修正。)
```
...................
...................
...................
...................
...................
...................
...................
...................
........ooooo......
.........xxxx......
...................
...................
...................
...................
...................
...................
...................
...................
...................
```
```
YES
```
- 黑方下了 $5$ 子,白方下了 $4$ 子。
- 黑方连成 $5$ 子获胜,属于正常状态。
```
...................
...................
...................
...................
...................
...................
...................
...................
.........x.........
......oooooo.......
........xxxx.......
...................
...................
...................
...................
...................
...................
...................
...................
```
```
YES
```
- 黑子连成 $6$ 个也属于正常。
- 例如黑子原本有 $2$ 个连在一起,中间隔一个空格,后面又有 $3$ 个连在一起,若在中间空格处下黑子,就会出现这种情况。
```
...................
...................
...................
...................
...................
...................
........x..........
........x....x.....
...........x.......
...oooooooooo......
...................
......x......x.....
....x......x.......
.........x.........
...................
...................
...................
...................
...................
```
```
NO
```
- 黑方下了 $10$ 子,白方下了 $9$ 子。
- 在黑子连成 $10$ 个之前,黑方已经获胜,游戏应已结束,因此属于异常状态。
```
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
```
```
YES
```
- 如果高桥君(黑方)一子未下就睡着了,这种情况也是正常的。
输入格式
输入共 $19$ 行,每行 $19$ 个字符,仅包含 `o`、`x`、`.`。
输出格式
如果棋盘状态正常,输出 `YES`,否则输出 `NO`,末尾换行。
说明/提示
无。
由 ChatGPT 4.1 翻译