我目前正在尝试为Sudoku构建成本函数。我的随机9x9网格分配具有以下代码:
m = np.zeros((9,9)) #9x9 grid of all zeros
vals = np.arange(1,10) #set of values from 1 to 9 aranged randomly
for i in range(0,9):
m[i,:] = np.random.choice(vals,size=9,replace=False) #randomly choses a set of 9 values for the row
print(m.astype(int)) #prints as integers
随后,我为此网格的每一列中的重复次数创建了一个分数:
m = m
i = 1
for i in range(0,9): #produces the sum of the columns score values collectively
print(sum([r - 1 for r in Counter((m[:,i])).values()]))
我想知道是否有一种方法可以生成每个Nonet的分数? (9x9数独网格的每个3x3分组)
我感觉我将不得不为每个3x3网格划分一个小节,然后以与上述相同的方式使用Counter函数生成重复项,但是我不确定如何执行此操作。