diff --git a/36-240525-pass/main.py b/36-240525-pass/main.py new file mode 100644 index 0000000..47ca73a --- /dev/null +++ b/36-240525-pass/main.py @@ -0,0 +1,74 @@ +class Solution: + def isValidSudoku(self, board: list[list[str]]) -> bool: + plates = [] + for l in board: + plates.append([]) + for ch_num in l: + if ch_num.isalnum(): + num = int(ch_num[0]) + else: + num = -1 + plates[-1].append(num) + def judge_1(plates, i, j): + t = plates[i][j] + for idx, num in enumerate(plates[i]): + if idx == j: continue + if num == t: return False + return True + + def judge_2(plates, i, j): + t = plates[i][j] + l = [] + for idx in range(0, 9): + l.append(plates[idx][j]) + for idx, num in enumerate(l): + if idx == i: continue + if num == t: return False + return True + + def judge_3(plates, i, j): + row = i // 3 * 3 + col = j // 3 * 3 + l = [] + for idx1 in range(row, row + 3): + for idx2 in range(col, col + 3): + if idx1 == i and idx2 ==j: continue + l.append(plates[idx1][idx2]) + for idx,num in enumerate(l): + if num == plates[i][j]: + return False + return True + + for i in range(0, 9): + for j in range(0, 9): + if plates[i][j] == -1: continue + if not judge_1(plates, i, j): + return False + if not judge_2(plates, i, j): + return False + if not judge_3(plates, i, j): + return False + return True + +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"]] + +sol = Solution() +print(sol.isValidSudoku(board=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"]] +print(sol.isValidSudoku(board=board)) \ No newline at end of file