4

そこで、9x9 行列を生成する数独ジェネレーターを作成しました。私の行、列、サブ 3x3 行列はすべて、数独のルールに従う必要があります。私のコラムだけがルールに従っていません。誰でも手伝ってもらえますか? これが私のコードです:

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
4

1 に答える 1

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

[row], を置き換えるだけ[h]で問題ありません。

于 2013-09-20T19:11:15.427 に答える