Teil eines Sudoku checkers: Ich habe einen Knoten im Hirn
Verfasst: Donnerstag 25. Oktober 2012, 21:34
Hi folks,
ich habe gerade einen Denkfehler und ich befuerchte, ich werde heute nicht schlafen koennen, wenn ich nicht weiss, warum das nicht so geht wie ich mir das vorstelle
. Es geht um einen Teil eines Sudoku Checkers. Ich weiss, es gibt da viel im Netz, aber mich interessiert gerade, warum mein Ansatz spezifisch nicht geht. Wenn ihr mir die Loesung verraten koenntet, waere das nett.
Da in Sudoku die 3x3 "sub"-Quadrate auch alle Zahlen von 1-9 beinhalten sollen, versuche ich gerade die 9x9 Listen so zu rearrangieren, dass ich pro nested list den Inhalt eines Quadrates habe. Falls das unverstaendlich war, hier ein Ausschnitt eines Beispiels:
wuerde somit zu
Mein Code (bei dem ich den Fehler partout nicht sehen kann) sieht so aus
Als Antwort bekomme ich jedoch eine Liste mit 9 nested lists, die alle Zahlen des Sudoku enthalten, also jeweils 81 elemente :K
Was mache ich falsch? :K
Ich hoffe ich konnte es einigermassen erlaeutern. Danke allen schonmal fuer input.
ich habe gerade einen Denkfehler und ich befuerchte, ich werde heute nicht schlafen koennen, wenn ich nicht weiss, warum das nicht so geht wie ich mir das vorstelle

Da in Sudoku die 3x3 "sub"-Quadrate auch alle Zahlen von 1-9 beinhalten sollen, versuche ich gerade die 9x9 Listen so zu rearrangieren, dass ich pro nested list den Inhalt eines Quadrates habe. Falls das unverstaendlich war, hier ein Ausschnitt eines Beispiels:
Code: Alles auswählen
5 3 4 | 6 7 8 | 9 1 2
6 7 2 | 1 9 5 | 3 4 8
1 9 8 | 3 4 2 | 5 6 7
Code: Alles auswählen
[[5,3,4,6,7,2,1,9,8], [6,7,8,1,9,5,3,4,2], [9,1,2,3,4,8,5,6,7]]
Code: Alles auswählen
def make_sudoku_boxes(grid):
boxes = [[]]*9
indices = [(0,3),(3,6),(6,None)]
index = 0
while index < len(grid):
while index < len(grid):
for i,j in indices:
if index/3 == 0:
cur_in = indices.index((i,j))
elif index/3 == 1:
cur_in = indices.index((i,j)) + 3
else:
cur_in = indices.index((i,j)) + 6
boxes[cur_in]+= grid[index][i:j
index += 1
return boxes
valid = [[5,3,4,6,7,8,9,1,2],
[6,7,2,1,9,5,3,4,8],
[1,9,8,3,4,2,5,6,7],
[8,5,9,7,6,1,4,2,3],
[4,2,6,8,5,3,7,9,1],
[7,1,3,9,2,4,8,5,6],
[9,6,1,5,3,7,2,8,4],
[2,8,7,4,1,9,6,3,5],
[3,4,5,2,8,6,1,7,9]]
Was mache ich falsch? :K
Ich hoffe ich konnte es einigermassen erlaeutern. Danke allen schonmal fuer input.