python 數獨 Python中的數獨檢查器

2021-10-21 03:34:12 字數 1504 閱讀 6600

我正在嘗試用python建立乙個數獨檢查器:ill_formed = [[5,3,4,6,7,8,9,1,2],

[6,7,2,1,9,5,3,4,8],

[1,9,8,3,4,2,5,6,7],

[8,5,9,7,6,1,4,2,3],

[4,2,6,8,5,3,7,9], #

[7,1,3,9,2,4,8,5,6],

[9,6,1,5,3,7,2,8,4],

[2,8,7,4,1,9,6,3,5],

[3,4,5,2,8,6,1,7,9]]

easy = [[2,9,0,0,0,0,0,7,0],

[3,0,6,0,0,8,4,0,0],

[8,0,0,0,4,0,0,0,2],

[0,2,0,0,3,1,0,0,7],

[0,0,0,0,8,0,0,0,0],

[1,0,0,9,5,0,0,6,0],

[7,0,0,0,9,0,0,0,1],

[0,0,1,2,0,0,3,0,6],

[0,3,0,0,0,0,0,5,9]]

我期待這樣的輸入-乙個由9個列表組成的列表。零表示使用者尚未填寫的數字。它們可以在一行、一列或3x3中多次出現。def check_sudoku(grid):

if len(grid) == 9:

numsinrow = 0

for i in range(9):

if len(grid[i]) == 9:

numsinrow += 1

if numsinrow == 9:

for i in range(9):

rowoccurence = [0,0,0,0,0,0,0,0,0,0]

for j in range(9):

rowoccurence[grid[i][j]] += 1

temprow = rowoccurence[1:10]

if temprow == [1,1,1,1,1,1,1,1,1]:

return true

else:

return false

else:

return false

else:

return false

顯然,我需要檢查是否有乙個9x9列表(網格),並且在每一行、每一列和3x3小正方形中沒有重複項。在**中,我首先檢查是否有適當數量的行(應該有9行)。然後我檢查每一行中是否有9個元素(使用格式錯誤的示例,您會發現情況並非如此)。然後我試圖檢查每一行中的重複項,但這樣做有些困難。我想我可以迴圈每一行,迴圈每一行中的元素,並將1新增到乙個int列表中(rowoccurrence)。例如,如果第乙個數字是2,那麼rowoccurence[2]應該等於1。0在rowoccurrence[0]中,未被選中(我有乙個臨時列表,該列表應包含除第乙個元素(零)之外的所有內容,因為一行中可能有超過1個零,並且網格仍然是合法的)。我試著對照正確值的引用列表檢查臨時列表(基本上是rowoccurrence),但它似乎不起作用。你能幫我檢查一下這個數獨檢查器裡的行嗎?提前謝謝你!

python 數獨資料介面

1 呼叫sudokumaker 初始化數獨建立例項 2 例項呼叫setsudimaker 可以建立乙個數獨,引數為難度,選填1 30,每 1會增加兩個空 3 例項呼叫getarr 獲取數獨,為乙個二元陣列,為 0 的地方表示此處為空 4 例項呼叫getanswer 獲取一種數獨答案,同樣為乙個二元陣...

36 有效的數獨 Python

判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。示例 1 輸入 5 3 7 6 1 9 5 9 8 6 8 6 3 4 8 3 1 7 2 6 6 2 8 4 1 9 5 8 7 9 輸...

LeetCode 有效的數獨(python)

題目 判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。上圖是乙個部分填充的有效的數獨 數獨部分空格內已填入了數字,空白格用 表...