我有一个解决数独的函数来更新我的key = coordinates字典; value =可能的数字基于数字“k”是否已经在数独板上的一行中:
k = 8
for key, value in dic_i.items():
if k in solving[key[0],0:]:
if k in value:
value.remove(k)
print(dic_i)
我在这里粘贴了部分解决的数独板和我的初始可能性字典:
solving = np.array([3, 1, 9, 4, 7, 2, 6, 8, 5],
[4, 5, 2, 6, 3, 8, 9, 7, 1],
[0, 0, 6, 9, 5, 1, 4, 2, 3],
[0, 0, 4, 1, 2, 0, *8, 5, 0],
[2, 6, 1, 5, 8, 9, 3, 4, 7],
[0, 3, 5, 7, 4, 0, 0, 0, 0],
[5, 4, 3, 8, 1, 7, 2, 0, 0],
[6, 2, 7, 3, 9, 4, 5, 1, 8],
[1, 9, 8, 2, 6, 5, 7, 3, 4]])
dic_i
Out[1081]:
{(2, 0): [7, 8],
(2, 1): [7, 8],
(3, 0): [7, 8, 9],
(3, 1): [7, 8],
(3, 5): [3, 6, 9],
(3, 8): [6, 9],
(5, 0): [8, 9],
(5, 5): [6, 9],
(5, 6): [1, 8],
(5, 7): [6, 9],
(5, 8): [2, 6, 9],
(6, 7): [6, 9],
(6, 8): [6, 9]}
我专注于从第4行删除可能的数字“8”,在顶部运行我的代码后,我得到:
dic_i
Out[1080]:
{(2, 0): [7, 8],
(2, 1): [7],
(3, 0): [7, 9],
(3, 1): [7],
(3, 5): [3, 6, 9],
(3, 8): [6, 9],
(5, 0): [8, 9],
(5, 5): [6, 9],
(5, 6): [1, 8],
(5, 7): [6, 9],
(5, 8): [2, 6, 9],
(6, 7): [6, 9],
(6, 8): [6, 9]}
我似乎无法弄清楚如何(2,1) - 数字8被删除???第3行中没有数字8 ...(对于(3,0)和(3,1)它正确地删除了数字8)。
它在我运行时有效。
import numpy as np
solving = np.array([[3, 1, 9, 4, 7, 2, 6, 8, 5],
[4, 5, 2, 6, 3, 8, 9, 7, 1],
[0, 0, 6, 9, 5, 1, 4, 2, 3],
[0, 0, 4, 1, 2, 0, 8, 5, 0],
[2, 6, 1, 5, 8, 9, 3, 4, 7],
[0, 3, 5, 7, 4, 0, 0, 0, 0],
[5, 4, 3, 8, 1, 7, 2, 0, 0],
[6, 2, 7, 3, 9, 4, 5, 1, 8],
[1, 9, 8, 2, 6, 5, 7, 3, 4]])
dic_i = {(2, 0): [7, 8],
(2, 1): [7, 8],
(3, 0): [7, 8, 9],
(3, 1): [7, 8],
(3, 5): [3, 6, 9],
(3, 8): [6, 9],
(5, 0): [8, 9],
(5, 5): [6, 9],
(5, 6): [1, 8],
(5, 7): [6, 9],
(5, 8): [2, 6, 9],
(6, 7): [6, 9],
(6, 8): [6, 9]}
k = 8
for key, value in dic_i.items():
if k in solving[key[0],0:]:
if k in value:
value.remove(k)
print(dic_i)
打印:
{(2, 0): [7, 8],
(2, 1): [7, 8],
(3, 0): [7, 9],
(3, 1): [7],
(3, 5): [3, 6, 9],
(3, 8): [6, 9],
(5, 0): [8, 9],
(5, 5): [6, 9],
(5, 6): [1, 8],
(5, 7): [6, 9],
(5, 8): [2, 6, 9],
(6, 7): [6, 9],
(6, 8): [6, 9]}