用代码生成一个数独游戏
时间: 2023-07-01 20:11:59 浏览: 246
javascript sudoku 数独智力游戏生成代码
好的,以下是Python代码实现数独游戏的生成:
```python
import random
def create_sudoku():
# 初始化一个9x9的二维列表,表示数独游戏
sudoku = [[0 for _ in range(9)] for _ in range(9)]
# 生成第一行的随机排列
first_row = random.sample(range(1, 10), 9)
# 填充第一行
for j in range(9):
sudoku[0][j] = first_row[j]
# 递归填充数独游戏
fill_sudoku(sudoku, 0, 0)
return sudoku
def fill_sudoku(sudoku, row, col):
# 边界条件:填充完最后一行
if row == 8 and col == 9:
return True
# 边界条件:填充完一行
if col == 9:
row += 1
col = 0
# 如果当前位置已经填充了数字,则跳过
if sudoku[row][col] > 0:
return fill_sudoku(sudoku, row, col + 1)
# 枚举当前位置可以填充的数字
for val in range(1, 10):
# 检查当前数字是否可行
if check_valid(sudoku, row, col, val):
sudoku[row][col] = val
# 递归填充下一个位置
if fill_sudoku(sudoku, row, col + 1):
return True
# 回溯
sudoku[row][col] = 0
return False
def check_valid(sudoku, row, col, val):
# 检查行是否合法
if val in sudoku[row]:
return False
# 检查列是否合法
for i in range(9):
if sudoku[i][col] == val:
return False
# 检查3x3的宫格是否合法
row_start = (row // 3) * 3
col_start = (col // 3) * 3
for i in range(row_start, row_start + 3):
for j in range(col_start, col_start + 3):
if sudoku[i][j] == val:
return False
return True
if __name__ == '__main__':
# 生成数独游戏
sudoku = create_sudoku()
# 打印数独游戏
for i in range(9):
print(sudoku[i])
```
运行以上代码,即可生成一个随机的数独游戏。
阅读全文