请在上面的代码中加上检查每行每列中是否1到9都有时出现
时间: 2024-03-03 17:49:08 浏览: 51
好的,以下是修改后的 Python 函数,可以检查一个填数后的 9×9 数独是否是合法解,并且每行、每列都包含 1 到 9 的数字:
```python
def check_sudoku(sudoku):
# 检查每行是否有重复数字,并且是否包含 1 到 9 的数字
for row in sudoku:
if len(set(row)) != 9 or set(row) != set(range(1, 10)):
return 0
# 检查每列是否有重复数字,并且是否包含 1 到 9 的数字
for col in range(9):
if len(set([sudoku[row][col] for row in range(9)])) != 9 or set([sudoku[row][col] for row in range(9)]) != set(range(1, 10)):
return 0
# 检查每个 3x3 宫格是否有重复数字
for i in range(0, 9, 3):
for j in range(0, 9, 3):
block = []
for row in range(i, i + 3):
for col in range(j, j + 3):
block.append(sudoku[row][col])
if len(set(block)) != 9 or set(block) != set(range(1, 10)):
return 0
# 如果通过上述验证,则说明是合法解
return 1
```
在原有的代码基础上,我们新增了对每行和每列中是否包含 1 到 9 的数字的检查。如果检查不通过,则说明不是合法解,返回 0;否则说明是合法解,返回 1。
阅读全文