检查tic tac toe中的获胜者-NumPy/Python

检查tic tac toe中的获胜者-NumPy/Python,python,numpy,Python,Numpy,我想检查tic tac toe游戏中所有可能的赢家条件,如何以功能性方式重写 board = numpy.array([[0, 0, 0], [0, 0, 0], [0, 0, 0]]) player = 1 if any([(board[0, :] == player).all(), (board[:, 0] == player).all(), (board[1, :] ==

我想检查tic tac toe游戏中所有可能的赢家条件,如何以功能性方式重写

board = numpy.array([[0, 0, 0],
                     [0, 0, 0],
                     [0, 0, 0]])
player = 1

if any([(board[0, :] == player).all(),
        (board[:, 0] == player).all(),
        (board[1, :] == player).all(),
        (board[:, 1] == player).all(),
        (board[2, :] == player).all(),
        (board[:, 2] == player).all()]):
    print('Win')

使用
any
all
-

mask = board==player
out = mask.all(0).any() | mask.all(1).any()
要解释对角的,需要做更多的工作-

out |= np.diag(mask).all() | np.diag(mask[:,::-1]).all()

别忘了检查对角线胜利。太棒了。。。另外,对于对角线,您可以使用
mask.diagonal().all()
mask[:-1].diagonal().all()
(如果您想考虑这些)