#!/usr/bin/env python3 # -*- coding: utf-8 -*- # author: bt3gl ``` Determine if a 9 x 9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules: - Each row must contain the digits 1-9 without repetition. - Each column must contain the digits 1-9 without repetition. - Each of the nine 3 x 3 sub-boxes of the grid must contain the digits 1-9 without repetition. Input: 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"]] Output: true ``` def is_valid_sudoku(board) -> bool: N = 9 rows = [set() for _ in range(N)] cols = [set() for _ in range(N)] boxes = [set() for _ in range(N)] for r in range(N): for c in range(N): val = board[r][c] if val == '.': continue if val in rows[r]: return False rows[r].add(val) if val in cols[c]: return False cols[c].add(val) index = (r // 3) * 3 + c // 3 if val in boxes[index]: return False boxes[index].add(val) return True