使用下面的代码,我可以检查行和列,看看数独程序是否设置正确;函数返回两个checkIt的答案(rows和cols)。有没有一种方法可以设置代码来检查行和列,然后返回“这个数独解决方案是正确的!”如果两者都是正确的(True),并且能够返回“Error in column/row(.append(number))”,如果行/列checkIt函数解决方案碰巧不正确(False)?在
import sys
from scanner import *
def createList(size):
if size == 0: return []
else:
return [0] + createList(size -1)
def printGrid(gridlist):
for row in gridlist:
print (str(row)+"\n")
def rows(g):
return len(g)
def cols(g):
return len(g[0])
def printMatrix(g):
for i in range(0,rows(g),1):
for j in range(0,cols(g),1):
print(g[i][j],end=' ')
print('')
print('')
def readinput(filename,grid):
s = Scanner(filename)
r = s.readtoken()
while r != "":
r = int(r)
c = s.readint()
v = s.readint()
grid[r][c]=v
r = s.readtoken()
def checkRows(g):
for rows in g:
numbersInRow = []
for number in rows:
if number != 0 and number in numbersInRow:
return g.index(rows),False
else:
numbersInRow.append(number)
return "This Sudoku solution is correct!"
def checkCols(g):
for cols in g:
numbersInCol = []
for number in cols:
if number != 0 and number in numbersInCol:
return g.index(cols),False
else:
numbersInCol.append(number)
return True
def checkIt(g):
checkRows(g)
rowSuccess = checkRows(g)
print(rowSuccess)
checkCols(g)
colSuccess = checkCols(g)
print(colSuccess)
def main():
grid = createList(9)
for i in range(9):
grid[i] = createList(9)
readinput(sys.argv[1],grid)
printMatrix(grid)
checkIt(grid)
main()
编辑:关于下面的注释:如果出现错误,尝试返回一个错误位置列表(当出现错误时,只需在列表中追加一个错误)。最后,如果列表的大小为0(没有错误),则返回True
只需让checkRows(g)和checkCols(g)在一切正常的情况下返回“good”,如果出现错误,则返回错误所在的行/列的编号。在
首先使checkRows返回冲突列表
相关问题 更多 >
编程相关推荐