classSolution:"""
def check(ch):
s = ch * length
any(row == s for row in board) # 行
any(col == s for col in map(''.join, zip(*board))) # 列
all(board[i][i] for i in range(length)) # -45度对角线
all(board[i][length-i-1] for i in range(length)) # 45度对角线
"""deftictactoe(self, board: List[str])->str:
n =len(board)defcheck(ch):
s = ch * n
returnany((any(row == s for row in board),any(col == s for col inmap(''.join,zip(*board))),all(board[i][i]== ch for i inrange(n)),all(board[i][n - i -1]== ch for i inrange(n)),))if check('X'):return'X'if check('O'):return'O'if' 'in''.join(board):return'Pending'return'Draw'
设计一个算法,判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" "代表一个空位。以下是井字游戏的规则:玩家轮流将字符放入空位(" ")中。第一个玩家总是放字符"O",且第二个玩家总是放字符"X"。"X"和"O"只允许放置在空位中,不允许对已放有字符的位置进行填充。当有N个相同(且非空)的字符填充任何行、列或对角线时,游戏结束,对应该字符的玩家获胜。当所有位置非空时,也算为游戏结束。如果游戏结束,玩家不允许再放置字符。如果游戏存在获