feat: kata determins if Tic Tac Toe Match is won an by whom. Or a draw or still ongoing. test: test cases for Tic Tac Toe Checker
This commit is contained in:
parent
04a3626071
commit
b1208ced57
29
src/codewars/kata_tic_tac_toe_checker.py
Normal file
29
src/codewars/kata_tic_tac_toe_checker.py
Normal file
@ -0,0 +1,29 @@
|
||||
def is_solved(board):
|
||||
vertical_0 = [board[i][0] for i in range(len(board))]
|
||||
vertical_1 = [board[i][1] for i in range(len(board))]
|
||||
vertical_2 = [board[i][2] for i in range(len(board))]
|
||||
diagonal_l = [board[i][i] for i in range(len(board))]
|
||||
diagonal_r = [board[i][len(board) - 1 - i] for i in range(len(board))]
|
||||
|
||||
if len(set(board[0])) == 1 and 0 not in set(board[0]):
|
||||
return board[0][0]
|
||||
elif len(set(board[1])) == 1 and 0 not in set(board[1]):
|
||||
return board[1][0]
|
||||
elif len(set(board[2])) == 1 and 0 not in set(board[2]):
|
||||
return board[2][0]
|
||||
elif len(set(board[2])) == 1 and 0 not in set(board[2]):
|
||||
return board[2][0]
|
||||
elif len(set(vertical_0)) == 1 and 0 not in set(vertical_0):
|
||||
return board[0][0]
|
||||
elif len(set(vertical_1)) == 1 and 0 not in set(vertical_1):
|
||||
return board[1][1]
|
||||
elif len(set(vertical_2)) == 1 and 0 not in set(vertical_2):
|
||||
return board[2][2]
|
||||
elif len(set(diagonal_l)) == 1 and 0 not in set(diagonal_l):
|
||||
return board[0][0]
|
||||
elif len(set(diagonal_r)) == 1 and 0 not in set(diagonal_r):
|
||||
return board[0][2]
|
||||
elif 0 in board[0] or 0 in board[1] or 0 in board[2]:
|
||||
return -1
|
||||
else:
|
||||
return 0
|
||||
18
tests/tests_codewars/test_tic_tac_toe_checker.py
Normal file
18
tests/tests_codewars/test_tic_tac_toe_checker.py
Normal file
@ -0,0 +1,18 @@
|
||||
from src.codewars.kata_tic_tac_toe_checker import is_solved
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("board", "expected"),
|
||||
[
|
||||
([[0, 0, 1], [0, 1, 2], [2, 1, 0]], -1),
|
||||
([[1, 1, 1], [0, 2, 2], [0, 0, 0]], 1),
|
||||
([[2, 1, 2], [2, 1, 1], [1, 1, 2]], 1),
|
||||
([[2, 1, 2], [2, 1, 1], [1, 2, 1]], 0),
|
||||
([[1, 1, 1], [0, 2, 2], [0, 0, 0]], 1),
|
||||
([[2, 1, 1], [0, 1, 1], [2, 2, 2]], 2),
|
||||
([[1, 2, 1], [1, 1, 2], [2, 1, 2]], 0),
|
||||
],
|
||||
)
|
||||
def test_is_solved(board, expected):
|
||||
assert is_solved(board) == expected
|
||||
Loading…
x
Reference in New Issue
Block a user