0
我被卡在解決數獨謎題與python.I解決它使用回溯error.My方法CodeGo.net,正確地實現這個方法正確地達到了一些元素。但後一些元素它不移動到下一個空單元來實現這一點,但它正在着眼於那個特定的單元格。我認爲我的函數來檢查某個位置上的值是否有效是正確的。我無法弄清楚我正在做的錯誤。有人可以幫我解決這個問題。解決數獨難題的難點
代碼:
from numpy import *
def isValid(matrix,row,col):
element = matrix[row][col]
#print element
#print where(matrix[row,:] == element)
if len(where(matrix[row,:] == element)[0]) == 1 and len(where(matrix[:,col] == element)[0]) == 1:
#print 'entered'
row_type = row%3;col_type =col%3
row_index = row-row_type;col_index = col-col_type
if len(where(matrix[row_index:row_index+3,col_index:col_index+3])[0] == 1):
return 1
else:
return 0
else :
return 0
sudoku = loadtxt('1')
sudoku = array(sudoku,dtype = int)
blankRow,blankCol = where(sudoku == 0)
i=0
while i< len(blankRow):
print 'i:',i
#print 'entered'
while sudoku[blankRow[i],blankCol[i]] < 9:
#print 'entered',sudoku[blankRow[i],blankCol[i]]
sudoku[blankRow[i],blankCol[i]] += 1
#j = sudoku[blankRow[i],blankCol[i]]
valid = isValid(sudoku,blankRow[i],blankCol[i])
if valid == 1:
break
if sudoku[blankRow[i],blankCol[i]] == 9 and valid != 1:
print 'entered' #invalid,i:',i,'j',j,'row:',blankRow[i],'col:',blankCol[i]
sudoku[blankRow[i],blankCol[i]] = 0
i-= 1
i+=1
嘗試單步執行代碼並找到確切的問題。 – drum