-
Notifications
You must be signed in to change notification settings - Fork 0
/
valid_sudoku.py
38 lines (32 loc) · 1.08 KB
/
valid_sudoku.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from typing import List
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
def is_valid_unit(unit):
unit = [i for i in unit if i != "."]
return len(unit) == len(set(unit))
def is_valid_row(board):
for row in board:
if not is_valid_unit(row):
return False
return True
def is_valid_col(board):
for col in zip(*board):
if not is_valid_unit(col):
return False
return True
def is_valid_square(board):
for i in (0, 3, 6):
for j in (0, 3, 6):
square = [
board[x][y]
for x in range(i, i + 3)
for y in range(j, j + 3)
]
if not is_valid_unit(square):
return False
return True
return (
is_valid_row(board)
and is_valid_col(board)
and is_valid_square(board)
)