python 随机生成一个9*9的九宫格
时间: 2023-08-25 10:03:41 浏览: 209
python生成九宫格图片
要随机生成一个9x9的九宫格,你可以使用Python的random模块来生成随机数,并确保生成的数字满足九宫格的规则。下面是一个示例代码:
```python
import random
def generate_sudoku():
board = [[0] * 9 for _ in range(9)]
solve_sudoku(board)
remove_cells(board, 40) # 移除40个数字,生成随机的九宫格
return board
def solve_sudoku(board):
if not find_empty(board):
return True
else:
row, col = find_empty(board)
numbers = list(range(1, 10))
random.shuffle(numbers)
for num in numbers:
if is_valid(board, num, (row, col)):
board[row][col] = num
if solve_sudoku(board):
return True
board[row][col] = 0
return False
def find_empty(board):
for i in range(9):
for j in range(9):
if board[i][j] == 0:
return i, j
return None
def is_valid(board, num, pos):
# 检查行
for i in range(9):
if board[pos[0]][i] == num and pos[1] != i:
return False
# 检查列
for i in range(9):
if board[i][pos[1]] == num and pos[0] != i:
return False
# 检查方块
box_x = pos[1] // 3
box_y = pos[0] // 3
for i in range(box_y * 3, box_y * 3 + 3):
for j in range(box_x * 3, box_x * 3 + 3):
if board[i][j] == num and (i, j) != pos:
return False
return True
def remove_cells(board, num_cells):
cells = [(i, j) for i in range(9) for j in range(9)]
random.shuffle(cells)
for i in range(num_cells):
row, col = cells[i]
board[row][col] = 0
```
调用`generate_sudoku`函数将生成一个随机的9x9九宫格,并返回该九宫格的二维数组。这个函数首先通过调用`solve_sudoku`函数来生成一个完整的解决方案,然后通过调用`remove_cells`函数来移除指定数量的数字,以生成一个随机的九宫格。
请注意,这里的代码只是一个简单的示例,你可以根据自己的需求进行修改和扩展。
阅读全文