python-2.7 – 数独生成器

所以我刚制作了一个可以生成9×9矩阵的Sudoku生成器.我的行,列和子3×3矩阵都应该遵循Sudoku的规则.只有我的专栏不遵守规则.有人可以帮忙吗?这是我的代码:

import random 

maxAttempts = 100 #stops the program after 100 attempts
count = 9999
solCount = 0

while count > maxAttempts:
    solCount +=1
    # init array
    puzzle = []
    for i in range(9):
        row = []
        for j in range(9):
            row.append(0)
            #print row
        puzzle.append(row)

    ##for r in puzzle:
    ##    print r

    # get random value
    for row in range(9):
        for col in range(9):
            thisRow=puzzle[row]
            thisCol=[]
            for h in range(9):
                thisCol.append(puzzle[row][col])

            subCol = int(col/3)
            subRow = int(row/3)
            subMat = []
            for subR in range (3):
                for subC in range (3):
                    subMat.append(puzzle[subRow*3 + subR][subCol*3 + subC])
            randVal = 0
            count = 0
            while randVal in thisRow or randVal in thisCol or randVal in subMat:
                randVal = random.randint(1,9)
                count+=1

                if count > maxAttempts: break 
            puzzle[row][col] = randVal

            if count > maxAttempts: break 
        if count > maxAttempts:
            break


for r in puzzle: print r

最佳答案

for h in range(9):
     thisCol.append(puzzle[h][col])

只需用[h]替换[row],你就可以了.

点赞