algos_and_structures/algocode/hash_tables/valid_sudoku.py
2026-02-07 09:19:45 +03:00

52 lines
1.9 KiB
Python

from typing import List
from collections import defaultdict
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
rows = defaultdict(set)
cols = defaultdict(set)
sqrs = defaultdict(set)
for row_count in range(0, len(board)):
for col_count in range(0, len(board[row_count])):
elem = board[row_count][col_count]
if elem == ".":
continue
if elem in rows[row_count] or elem in cols[col_count] or elem in sqrs[(row_count//3, col_count//3)]:
return False
rows[row_count].add(elem)
cols[col_count].add(elem)
sqrs[(row_count//3, col_count//3)].add(elem)
col_count += 1
row_count += 1
return True
cl = Solution()
board = [
["5", "3", ".", ".", "7", ".", ".", ".", "."],
["6", ".", ".", "1", "9", "5", ".", ".", "."],
[".", "9", "8", ".", ".", ".", ".", "6", "."],
["8", ".", ".", ".", "6", ".", ".", ".", "3"],
["4", ".", ".", "8", ".", "3", ".", ".", "1"],
["7", ".", ".", ".", "2", ".", ".", ".", "6"],
[".", "6", ".", ".", ".", ".", "2", "8", "."],
[".", ".", ".", "4", "1", "9", ".", ".", "5"],
[".", ".", ".", ".", "8", ".", ".", "7", "9"],
]
exp = True
print(f"Exp: {exp}\nRes: {cl.isValidSudoku(board)}")
board = [
["8", "3", ".", ".", "7", ".", ".", ".", "."],
["6", ".", ".", "1", "9", "5", ".", ".", "."],
[".", "9", "8", ".", ".", ".", ".", "6", "."],
["8", ".", ".", ".", "6", ".", ".", ".", "3"],
["4", ".", ".", "8", ".", "3", ".", ".", "1"],
["7", ".", ".", ".", "2", ".", ".", ".", "6"],
[".", "6", ".", ".", ".", ".", "2", "8", "."],
[".", ".", ".", "4", "1", "9", ".", ".", "5"],
[".", ".", ".", ".", "8", ".", ".", "7", "9"],
]
exp = False
print(f"Exp: {exp}\nRes: {cl.isValidSudoku(board)}")