Global $hinputs[9][9] GUICreate("Sudoku", 180, 200);GUI erstellen For $guizaehleins = 0 To 8 For $guizaehlzwei = 0 To 8 $hinputs[$guizaehlzwei][$guizaehleins] = GUICtrlCreateInput("",$guizaehlzwei * 20, $guizaehleins * 20, 20,20); 9x9 Inputs erstellen Next Next $hloesenbutton = GUICtrlCreateButton("Lösen!",0,180,180, 20); Lösen-Button erstellen GUISetState() While 1 sleep(20) $MSG = GUIGetMsg() If $MSG = -3 Then Exit;Beim Drücken auf das Kreuz: Schließen ElseIf $MSG = $hLoesenbutton Then _Loesen();Beim Drücken auf den Lösen-Button: Lösen EndIf WEnd Func _Loesen() For $einundachzigmal = 0 To 81;Nach 81 Durchläufen muss das Sudoku fertig sein, wenn es lösbar ist For $loesy = 0 To 8;hier geht das Script alle 9 y-Werte durch, die das Feld haben kann, in das eine Zahl geschrieben werden soll For $Loesx = 0 To 8;hier geht das Script alle 9 x-Werte durch, die das Feld haben kann, in das eine Zahl geschrieben werden soll $inputstate = GUICtrlRead($hinputs[$loesx][$loesy]);Wenn das Feld bereits voll ist, soll nichts gemacht werden If $inputstate = "" Then;Wenn das Feld bereits voll ist, soll nichts gemacht werden Local $moeglich[9] = [1,1,1,1,1,1,1,1,1];Hier wird gespeichert, ob die 1, die 2 ... in dieses Feld geschrieben werden könnte For $einsneun = 1 To 9;Hier geht das Script die Zahlen von 1 - 9 durch und prüft, ob diese in das Feld geschrieben werden können For $andery = 0 To 8;Dazu werden alle Felder der gleichen Spalte... $otherinputstate = GUICtrlRead($hinputs[$loesx][$andery]) If $einsneun = $otherinputstate Then $moeglich[$einsneun - 1] = 0 Endif Next For $anderx = 0 To 8;, die der gleichen Zeile... $otherinputstate = GUICtrlRead($hinputs[$anderx][$loesy]) If $einsneun = $otherinputstate Then $moeglich[$einsneun - 1] = 0 Endif Next For $andery2 = 0 To 2; und die des gleichen 3x3-Feldes überprüft, ob sie gleich der durch $einsneun festgelegten Zahl sind, wenn ja, kann diese Zahl nicht in das Feld geschrieben werden. For $anderx2 = 0 To 2 $otherinputstate = GUICtrlRead($hinputs[Floor($loesx / 3) * 3 + $anderx2][Floor($loesy / 3) * 3 + $andery2]) If $einsneun = $otherinputstate Then $moeglich[$einsneun - 1] = 0 Endif Next Next Next If $moeglich[0] = 1 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],1);Wenn If $moeglich[0] = 0 And $moeglich[1] = 1 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],2);nur If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 1 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],3);eine If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 1 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],4);Zahl If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 1 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],5);möglich If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 1 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],6);ist, If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 1 And $moeglich[7] = 0 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],7);muss If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 1 And $moeglich[8] = 0 Then GUICtrlSetData($hinputs[$loesx][$loesy],8);diese If $moeglich[0] = 0 And $moeglich[1] = 0 And $moeglich[2] = 0 And $moeglich[3] = 0 And $moeglich[4] = 0 And $moeglich[5] = 0 And $moeglich[6] = 0 And $moeglich[7] = 0 And $moeglich[8] = 1 Then GUICtrlSetData($hinputs[$loesx][$loesy],9);die richtige sein und wird in das Feld geschrieben. EndIf Next Next Next EndFunc