#arc0123. [arc012_3]五目並べチェッカー
[arc012_3]五目並べチェッカー
问题文
高桥君喜欢五子棋游戏。
五子棋是一种在 × 的围棋棋盘上交替放置棋子的游戏,当有 个或更多的棋子在纵、横或对角线上连成一线时,放置棋子的玩家获胜,游戏结束。
游戏必须由黑方先行。
高桥君和他的朋友青木君正在下五子棋,但高桥君不小心睡着了。
高桥君怀疑青木君在他睡觉的时候做了些不正当的行为,所以他想检查棋盘上是否有异常的地方。
请构建一个判断五子棋状态是否正常的程序。
这里的异常状态包括:
- 某一方的获胜条件被满足,但另一方继续放置棋子。
- 双方所放置的棋子数目不可能出现的状态。
输入
从标准输入读取的输入遵循以下格式。
-
输入有 行。
-
第 行的第 个字符表示棋盘上第 行第 列的格子,用字符 表示。
-
是三种可能的字符之一:
o
、x
、.
。o
表示黑子。x
表示白子。.
表示空白。
输出
如果棋盘状态正常,则输出 YES
,否则输出 NO
。
输出结果应该通过标准输出打印,并以换行符结尾。
输入例子 1
...................
...................
...................
...................
....x......o.......
...................
...................
.......o....o......
...................
........x..........
..............o....
...................
.......x...........
...................
...................
...................
...................
...................
输出例子 1
YES
- 黑方下了 步,白方下了 步。
- (描述有误,已进行修正。)
输入例子 2
...................
...................
...................
...................
....x......o.......
...................
...................
.......o....o......
...................
........x..........
..............o....
...................
.......x...........
...................
...................
.........o.........
...................
...................
...................
输出例子 2
NO
- 黑方下了 步,白方下了 步。
- 黑方多下了 步,所以这是一个异常状态。
输入例子 3
...................
...................
...................
...................
...................
...................
...................
...................
........ooooo......
.........xxxx......
........x..........
...................
...................
...................
...................
...................
...................
...................
...................
输出例子 3
NO
- 黑方下了 步,白方下了 步。
- 如果有一方满足胜利条件,游戏应该结束,所以黑方满足胜利条件是异常状态。
- (描述有误,已进行修正。)
输入例子 4
...................
...................
...................
...................
...................
...................
...................
...................
........ooooo......
.........xxxx......
...................
...................
...................
...................
...................
...................
...................
...................
...................
输出例子 4
YES
- 黑方下了 步,白方下了 步。
- 黑方连成了 子并胜利,状态正常。
输入例子 5
...................
...................
...................
...................
...................
...................
...................
...................
.........x.........
......oooooo.......
........xxxx.......
...................
...................
...................
...................
...................
...................
...................
...................
输出例子 5
YES
- 有 个连续的黑子,状态正常。
- 例如,如果有 个连续的黑子,并且中间隔了 个空格,再有 个连续的黑子,如果在空格上放置了黑子,就会形成这种情况。
输入例子 6
...................
...................
...................
...................
...................
...................
........x..........
........x....x.....
...........x.......
...oooooooooo......
...................
......x......x.....
....x......x.......
.........x.........
...................
...................
...................
...................
...................
输出例子 6
NO
- 黑方下了 步,白方下了 步。
- 在黑方连成 子之前,黑方就已经获胜并结束了游戏,所以这是一个异常状态。
输入例子 7
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
输出例子 7
YES
- 如果黑方是高桥君,并且他在没有下一步之前睡着了,这也是一个正常状态。