2017-10-18 11 views
1

チック・タック・トー・ゲームで勝者の可能性があるすべての条件をチェックしたいのですが、どのように機能的に書き換えることができますか?tic-tac-toeの勝者を確認する - NumPy/Python

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') 
+2

対角線の勝利のためにチェックすることを忘れないでください。 –

+0

よく記憶された@トムカレズ! – Skhaz

答えて

3

anyallの組み合わせ使用 - diagonalものを説明するために

mask = board==player 
out = mask.all(0).any() | mask.all(1).any() 

を、より多くの仕事をビット -

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

恐ろしい...また、対角線の場合、 'mask.diagonal()。all()'と 'mask [:: - 1] .diagonal()。all()'(あなたがそれら) –

+0

恐ろしいDivakar!君たちありがとう – Skhaz

関連する問題