欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 算數獨程序

老白1年前8瀏覽0評論

算數獨是一種受歡迎的數學謎題游戲,許多人都喜歡挑戰自己的智力。在計算機編程的世界里,我們也可以使用Python編寫一個算數獨程序來解決這些問題。

# 導入需要的庫
import numpy as np
# 定義全局變量
N = 9  # 數獨的維數
empty = 0  # 未填寫的格子
# 定義數獨矩陣
board = [[0, 0, 0, 9, 3, 0, 0, 0, 0],
[0, 2, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 8, 0, 0, 9, 0, 0],
[8, 0, 0, 0, 0, 4, 7, 0, 0],
[0, 0, 7, 0, 0, 0, 0, 0, 5],
[5, 0, 0, 0, 0, 3, 0, 8, 0],
[7, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 5, 2, 6, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]]
# 定義函數,查找可用數字
def find_empty(board):
for i in range(N):
for j in range(N):
if board[i][j] == empty:
return (i, j)
return None
# 定義函數,檢查數字是否合法
def is_valid(board, num, pos):
# 檢查行是否合法
for i in range(N):
if board[pos[0]][i] == num and pos[1] != i:
return False
# 檢查列是否合法
for i in range(N):
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 solve(board):
# 查找未填寫的格子
find = find_empty(board)
# 如果沒有未填寫的格子,程序結束
if not find:
return True
# 如果有未填寫的格子,繼續下一步
else:
row, col = find
# 嘗試填寫數字
for i in range(1, N + 1):
if is_valid(board, i, (row, col)):
board[row][col] = i
# 繼續搜索下一步
if solve(board):
return True
# 如果搜索失敗,將當前格子還原為空格
board[row][col] = empty
return False
# 測試程序
if __name__ == '__main__':
print(np.matrix(board))
solve(board)
print(np.matrix(board))

以上就是一個基本的Python算數獨程序,它使用遞歸來搜索并解決數獨,能夠幫助我們更輕松高效地解決這類數學問題。