用python實現判斷9 9數獨的正確性

2021-10-05 21:45:26 字數 2015 閱讀 7120

import sys

defpanduan

(list):

len_m =

len(

list

)# 定義乙個基準,拿每一行與每個宮排序之後跟temp對比,一致則說明,每一行都是1到9的數字

temp =

['1'

,'2'

,'3'

,'4'

,'5'

,'6'

,'7'

,'8'

,'9'

]if len_m ==9:

#如果list是9個元素則執行此段**,判斷每行排序之後是否與temp相等

for i in

list:if

sorted

(i)== temp:

return

true

else

:return

false

if len_m ==3:

#如果list是3個元素則執行此段**,現將3*3宮的每行列表相加變成乙個9個元素的列表,將9個元素的列表與temp比較

# print(list[0] + list[1] + list[2])

ifsorted

(list[0

]+list[1

]+list[2

])== temp:

return

true

else

:return

false

if __name__ ==

'__main__'

:#鍵盤輸入資料

sudo = sys.stdin.readline(

)#將鍵盤輸入的字元轉換成list再進行切片,切成9個含有9個元素的列表

list1 =

[list

(sudo[x *

9:x *9+

9])for x in

range(0

,9)]

#分成9*9的矩陣,每行都是乙個列表,9個列表;使用列表的切片

#再對9*9的列表進行切片,切成9個3*3的列表就是宮

list2 =[[

list

(list1[x]

[j *

3: j *3+

3])for x in

range(3

)]for j in

range(3

)]#切前三行

list3 =[[

list

(list1[x]

[j *

3: j *3+

3])for x in

range(3

,6)]

for j in

range(3

)]#中間三行

list4 =[[

list

(list1[x]

[j *

3: j *3+

3])for x in

range(6

,9)]

for j in

range(3

)]#最後三行

#相加最後得到9個3*3

list_end = list2 + list3 + list4

# print(list_end)

flag =

true

#設定乙個標誌

if panduan(list1)

:#呼叫panduan函式,如果9*9的列表是符合判斷的則往下執行

for x in list_end:

#迴圈取每個3*3的列表

print

(x)if panduan(x)

:#呼叫panduan函式,如果符合判斷則標誌是true,否則是false

flag =

true

else

: flag =

false

print

(flag)

#最後輸出判斷結果

9 9數獨 C 實現

9 9數獨規則 在乙個9 9的九宮格裡面填數字,每個方格中填入合適的數字以使得每行 從左到右 每列 從上到下 以及每個九宮格 加粗線條部分 都要包含從1 9的數字。示例如下 建立9 9的數獨矩陣 注意 int型!bool flag false void input bool check int n,...

9 9數獨(dfs暴力)

暴力,僅僅也是暴力而已 include using namespace std 構造完成標誌 bool sign false 建立數獨矩陣 int num 9 9 函式宣告 void input void output bool check int n,int key int dfs int n 主...

用舞蹈鏈實現數獨2

輸入12 12 12顯示答案,如果沒有顯示就是沒有結果 輸入13 13 13更換數獨開局 輸入0 8 0 8 0 9在指定位置放值 輸入11 11 11檢驗數獨是否正確 include include include rand函式 include srand函式 include consolecol...