unbelegt = 0 zahlen = [[0,0,0, 0,0,7, 0,3,0], #array daten [0,0,0, 0,0,0, 5,0,0], [0,5,9, 0,0,2, 7,0,0], # [1,0,0, 4,0,0, 0,0,8], [0,2,0, 0,0,5, 0,0,0], [0,4,3, 8,0,0, 0,6,0], # [9,3,0, 0,0,0, 0,0,0], [0,0,0, 0,7,0, 8,2,0], [0,8,0, 9,4,0, 0,0,5] ] def ausgabe(): # aktuelles sudoku for zeile in range(9): # anzahl zeilen for spalte in range(9): # anzahl spalten print(str(zahlen[zeile][spalte]), # ausgabe zahlen im array end=" ") print("") # neue zeile nach 9. spalte print("") # neue zeile nach 9. zeile def zahl_moeglich(x,y,zahl): # zahl prüfen auf koordinaten for xi in range (9): # spalten regel: spalte ist kdef zahl_moeglich(x,y,zahl): # zahl prüfen auf koordinaten if zahlen[xi][y] == zahl: # zahlen = überprüfte zahl - darf nicht sein: return False # dann fehler! for yi in range (9): # zeilen regel: zeile ist konstant, 9_spalten werden ünerprüft if zahlen[x][yi] == zahl: # zahlen = überprüfte zahl - darf nicht sein: return False # dann fehler! xLO = (x//3)*3 # x_Links_oben im 9x9 feld: begin suchfeld yLO = (y//3)*3 # y_Links_oben im 9x9 feld: begin suchfeld for xD in range(3): # x_Dazu im 3_er_feld (spalte) for yD in range(3): # y_Dazu im 3_er_feld (zeile) if zahlen[xLO+xD][yLO+yD] == zahl: # sind zahlen im 9x9 feld = zahl: fehler return False # fehler! return True # richtig! def loesung(): for x in range(9): # zeile for y in range(9): # spalte if zahlen[x][y] == 0: # unbelegt for zahl in range(1, 10):# 1= erste wert der geht, 10= wert, der nicht mehr geht if zahl_moeglich(x,y,zahl): # zahl prüfen zahlen[x][y] = zahl # zahl setzen loesung() # recursion zahlen[x][y] = 0 # zahl löschen return # ausgabe() # alle 9x9 felder überprüft