mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-05-02 06:46:18 -04:00
👾
This commit is contained in:
parent
1d44d182e2
commit
a85ed914d3
320 changed files with 0 additions and 0 deletions
53
math/check_sudoku_board.py
Normal file
53
math/check_sudoku_board.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
#!/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
|
Loading…
Add table
Add a link
Reference in a new issue