Ich stecke gerade in einer Tretmühle und finde nicht alleine heraus.
Mein Programm soll die Möglichkeiten bei (Killer-)Sudoku berechnen. Wenn ein Twin (nur zwei mögliche Zahlen) auftritt, sollen in der Spalte bei den anderen Möglichkeiten eben diese beiden Zahlen entfernt werden.
Das Programm selber hat diese Möglichkeiten schon generiert, es geht jetzt darum, die Twins aus der Liste der Möglichkeiten der anderen zu entfernen.
Code: Alles auswählen
twins = [(1, 2)] # dies ist das Format, wie mir die Twins ausgegeben werden, das Programm generiert diese automatisch
moeglichkeiten = [(1, 5, 9), (1, 6, 8), (2, 4, 9), (2, 5, 8), (2, 6, 7), (3, 4, 8), (3, 5, 7), (4, 5, 6)] # Dies sind die möglichen Werte (im Killer-Sudoku) Das Feld hat den Wert 15
Code: Alles auswählen
neue_moeglichkeiten = [(5, 9), (6, 8), (4, 9), (5, 8), (6, 7), (3, 4, 8), (3, 5, 7), (4, 5, 6)]
Das ganze war bisher eine for-Schleifen-Orgie, da ich die Einzelwerte der Listenelemente zum Weiterverarbeiten brauche und somit über die Möglichkeiten und die Twins mittels FOR-Schleifen iterieren muss.
Gefunden habe ich Listcomprehension, bekomme die aber nicht hin.
Code: Alles auswählen
moeglichkeiten = grid[stelle] # hier kommt als Ergebnis obige Liste rein : [(1, 5, 9), (1, 6, 8), (2, 4, 9), (2, 5, 8), (2, 6, 7), (3, 4, 8), (3, 5, 7), (4, 5, 6)]
neue_moeglichkeiten = [x for x in moeglichkeiten if x not in grid[key]] # in grid[key] stehen die zu löschenden Zahlen [(1, 2)]
Vielen Dank
Andi