以下是一个检查N x N井字棋胜利的示例代码:
def check_winner(board):
# 检查行
for row in board:
if len(set(row)) == 1 and row[0] != 0:
return row[0]
# 检查列
for col in range(len(board)):
column_values = [board[row][col] for row in range(len(board))]
if len(set(column_values)) == 1 and column_values[0] != 0:
return column_values[0]
# 检查对角线
diagonal1 = [board[i][i] for i in range(len(board))]
if len(set(diagonal1)) == 1 and diagonal1[0] != 0:
return diagonal1[0]
diagonal2 = [board[i][len(board)-1-i] for i in range(len(board))]
if len(set(diagonal2)) == 1 and diagonal2[0] != 0:
return diagonal2[0]
# 没有胜利者
return 0
# 示例用法
board = [
[1, 0, 1],
[0, 1, 0],
[1, 0, 0]
]
winner = check_winner(board)
if winner != 0:
print(f"胜利者是玩家 {winner}")
else:
print("没有胜利者")
这个示例代码首先检查每一行是否有相同的值,然后检查每一列是否有相同的值,最后检查两个对角线是否有相同的值。如果有任何一种情况出现,则返回胜利者的值(1或2),否则返回0表示没有胜利者。