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...