als gealteter Maschinenbauer bringe ich mir seid einiger Zeit autodidaktisch Python bei.
Dazu ackere ich das sehr interessante Pythonaufgabenbuch "Python Challenge" durch.
Da gibt es eine Aufgabe bei der ich einfach nicht weiterkomme.
Es geht darum über ein Array nachzuweisen das ein vorgegebenes Sudoku sowohl der Zeilen, Päckchen und Reihen immer die Zahlen 1-9 enthält.
Ich habe es nun geschafft die Zeilen des Arrays zu prüfen, was auch funktioniert. Aber bei der Überprüfung der "3x3 Päckchen" funktioniert es nicht mehr.
Hat jemand einen Tipp?
Danke und Grüße.
Code: Alles auswählen
import numpy as np
#Erzeugung Array mit Sudokuzahlen und Umwandlung in mehrdimensionales Array
sudokuarray = np.array ([1,2,3,4,5,6,7,8,9,4,5,6,7,8,9,1,2,3,7,8,9,1,2,3,4,5,6,2,1,4,3,6,5,8,9,7,3,6,5,8,9,7,2,1,4,8,9,7,2,1,4,3,6,5,5,3,1,6,4,2,9,7,8,6,4,2,9,7,8,5,3,1,9,7,8,5,3,1,6,4,2])
sudokuarray = sudokuarray.reshape (9,9)
ergebnislistezeilen = []
ergebnispäckchen = []
#Funktion zur Prüfung ob Zahlen von 1-9 in dem Prüfbereich des Sudoku enthalten sind
def prüf (bereich):
zahlen = list(range(1,10))
if set(zahlen).issubset(bereich):
ergebnis = "TRUE"
else:
ergebnis = "FALSE"
return ergebnis
#Schleife die alle 9 Zeilen prüft mit der gegebenen Funktion, ob diese alle Zahlen von 1-9 enthalten
a = 0
while a < 9:
z1 = sudokuarray [a,:9]
bereich = z1
prüf (bereich)
ergebnis = prüf(bereich)
ergebnislistezeilen.append (ergebnis)
a = a+1
#Schleife die alle "Päckchen" prüft ob diese alle Zahlen von 1-9 enthalten
p1 = sudokuarray [0:3, 0:3]
bereich = p1
prüf (bereich)
ergebnis = prüf(bereich)
ergebnispäckchen.append (ergebnis)
print ("Zeilenabfrage:",ergebnislistezeilen)
print ("Päckchenabfrage:",ergebnispäckchen)
print (sudokuarray)