# Valid Sudoku
<https://leetcode.com/problems/valid-sudoku/>
First define a `validate` function:
```python
def validate(group: List[str]):
numbers = list(filter(lambda x: x != '.', group))
return Counter(numbers) == Counter(set(numbers))
```
Then validate each `row`, `col`, and `box`.
```python
if not (all(validate))
for row in board:
if not validate(row):
return False
for j in range(9):
col = [board[i][j] for i in range(9)]
if not validate(col):
return False
for x in range(0, 9, 3):
for y in range(0, 9, 3):
box = [board[x + i][y + j] for i in range(3) for j in range(3)]
if not validate(box):
return False
return True
```
A more succinct functional solution:
```python
return all(
[
all(validate(row) for row in board),
all(validate([board[i][j] for i in range(9)]) for j in range(9)),
all(
validate(
[board[x + i][y + j] for i in range(3) for j in range(3)]
)
for x in range(0, 9, 3)
for y in range(0, 9, 3)
)
]
)
```