日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】9×9数独计算器

發布時間:2023/12/31 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】9×9数独计算器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

游戲規則: 每行每列數字不同,每個九宮格數字不一致,且灰色區域數字不一致!

# 判斷每一行數字是否不同 def check_row(arr):for i in arr:if(len(i) != len(set(i))):return Falsereturn True # 判斷每一列數字不相同 def check_col(arr):arrDict = []for i in range(len(arr)):# 讀取每一行的for j in range(len(arr[0])):arrDict.append(arr[i][j])if(len(arrDict) != len(set(arrDict))):return Falseelse:arrDict.clear()return True# 判斷每個九宮格不相同 def check_every(arr):#找每個九宮格左上角的點dict2 = []i = 0while (i < len(arr)):j = 0while (j < len(arr)):for m in range(i, i + 3):for n in range(j, j + 3):tmp = [m, n]dict2.append(tmp)j += 3i += 3n = 9 # 大列表中幾個數據組成一個小列表dict3 = [dict2[i:i + n] for i in range(0, len(dict2), n)]checkTmp = []for aa in dict3:for mm in aa:checkTmp.append(arr[mm[0]][mm[1]])if (len(checkTmp) != len(set(checkTmp))):return FalsecheckTmp.clear()return True # 指定區域數字不相同 def check_appoint(arr):points = [[1, 1], [1, 5], [5, 1], [5, 5]]dict3 = []for i in range(len(points)):# 遍歷每一個左上角的點rowNum = points[i][0]colNum = points[i][1]dict3.clear()for m in range(rowNum, rowNum + 3):for n in range(colNum, colNum + 3):tmp = [m, n]dict3.append(tmp)# 讀取列表中每個點對應的值listTmp = []for point in dict3:listTmp.append(arr[point[0]][point[1]])if (len(listTmp) != len(set(listTmp))):return Falsereturn Truearr = [[0,0,0,1,3,8,5,0,0],[0,0,0,0,0,4,2,0,0],[0,0,0,0,0,0,0,6,3],[7,0,0,0,0,0,0,5,8],[2,0,0,0,0,0,0,0,4],[8,3,0,0,0,0,0,0,2],[3,8,0,0,0,0,4,0,0],[0,0,9,4,0,0,0,3,0],[0,0,6,8,1,3,0,0,0] ] # arr = [ # [6,7,2,1,3,8,5,4,9], # [9,5,3,7,6,4,2,8,1], # [4,1,8,2,5,9,7,6,3], # [7,6,4,9,2,1,3,5,8], # [2,9,5,3,8,6,1,7,4], # [8,3,1,5,4,7,6,9,2], # [3,8,7,6,9,2,4,1,5], # [1,2,9,4,7,5,8,3,6], # [5,4,6,8,1,3,9,2,7] # ]# 每一行都是由1-9構成,所以創建一個標準列表 pipList = [0,1,2,3,4,5,6,7,8,9] # 數獨中每一行都有數字,減掉已有的,剩下的為每一行需要填寫的數字 needList = [] for i in range(0,len(arr)):needList.append(list(set(pipList).difference(set(arr[i]))))print(needList) # 開始往每一行數組中填寫needList[i],編不下去了!!!if(check_row(arr) & check_col(arr) & check_every(arr) & check_appoint(arr)):print(True) else:print(False)

編不下去了,求指教!?

?

總結

以上是生活随笔為你收集整理的【Python】9×9数独计算器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。