Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- line1=[[0],[4],[5],[7],[0],[0],[0],[6],[1]]
- line2=[[0],[0],[0],[8],[0],[5],[4],[0],[0]]
- line3=[[0],[0],[7],[6],[4],[0],[0],[0],[2]]
- line4=[[5],[0],[0],[9],[6],[4],[0],[0],[0]]
- line5=[[6],[0],[8],[5],[0],[1],[0],[3],[0]]
- line6=[[0],[7],[0],[0],[0],[0],[0],[9],[0]]
- line7=[[3],[0],[2],[4],[0],[0],[1],[0],[0]]
- line8=[[9],[0],[0],[1],[0],[0],[0],[0],[6]]
- line9=[[0],[0],[0],[0],[0],[3],[8],[0],[0]]
- sudoku=[line1,line2,line3,line4,line5,line6,line7,line8,line9]
- def checkSquare(square):
- if len(square)==1 and square!=[0]:
- done=True
- else:
- done=False
- return(done)
- def listSubtract(subtract,list1):
- result=list1
- for a in range (len(subtract)):
- if subtract[a] in list1:
- result.remove(subtract[a])
- return (result)
- #"row"kann jede liste, die neun Felder umfasst und in der die zahlen von eins bis neun vorkommen sollen sein (also Zeilen, Spalten oder Blöcke).
- #notAdd ist die liste die die in dieser Reihe unmöglichen Zahlen enthält
- #possible ist die Liste die alle möglichen zahlen eines feldes speichert
- def checkRow(row):
- notAdd=[]
- for a in range(9):
- if checkSquare(row[a]):
- notAdd=notAdd+(row[a])
- # print(notAdd)
- for b in range(9):
- if len(row[b])!=1 or row[b]==[0]:
- if row[b]==[0]:
- possible=[1,2,3,4,5,6,7,8,9]
- else:
- possible=row[b]
- # print(possible)
- possible=listSubtract(notAdd,possible)
- row[b]=possible
- # print(row[b])
- return()
- def checkForComplete(sudoku):
- completeness=0
- for x in range(len(sudoku)):
- for y in range(len(sudoku[x])):
- if checkSquare(sudoku[x][y]):
- completeness=completeness+1
- return(completeness)
- def printSudoku(sudoku):
- n="\n"
- s="|"
- line="|---|---|---||---|---|---||---|---|---|"
- smoothLine="---------------------------------------"
- output=smoothLine+n
- for i in range(len(sudoku)):
- for j in range(len(sudoku[i])):
- if j%3==0:
- output=output+s
- output=output+" "+str(sudoku[i][j][0])+" "+s
- if (i+1)%3==0:
- output=output+n+smoothLine+n
- else:
- output=output+n+line+n
- print(output)
- return()
- while checkForComplete(sudoku)<81:
- #checkt zeilen
- for g in range(9):
- checkRow(sudoku[g])
- #checkt spalten
- for f in range(9):
- spalte=[]
- for e in range(9):
- spalte.append(sudoku[e][f])
- checkRow(spalte)
- #checkt blöcke
- for o in range(3):
- for p in range(3):
- #o und p sind koordinaten des aktuellen blocks
- block=[]
- for c in range(3):
- for d in range(3):
- block.append(sudoku[3*o+c][3*p+d])
- checkRow(block)
- printSudoku(sudoku)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement