Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:rekursion:backtracking:sudoku-loeser:start [04.07.2024 07:49] – [Algorithmus] Marco Kuemmel | faecher:informatik:oberstufe:algorithmen:rekursion:backtracking:sudoku-loeser:start [27.02.2025 14:06] (aktuell) – Frank Schiebel | ||
---|---|---|---|
Zeile 13: | Zeile 13: | ||
**Vorüberlegungen: | **Vorüberlegungen: | ||
- | * In der nachfolgend gegebenen | + | |
+ | In der nachfolgend gegebenen Vorlage wird das Spielfeld in einem 81 Zeichen langen eindimensionalen | ||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | ||
Zeile 27: | Zeile 28: | ||
* Da es beim Sudoku in der Regel nur um das Finden einer einzigen Lösung geht, muss der rekursive Algorithmus aktiv abgebrochen werden. Ansonsten würde das Programm (wie bei den 8-Damen und den magischen Quadraten) immer noch weitere denkbare Lösungen suchen. Daher steht die boolean-Instanzvariable '' | * Da es beim Sudoku in der Regel nur um das Finden einer einzigen Lösung geht, muss der rekursive Algorithmus aktiv abgebrochen werden. Ansonsten würde das Programm (wie bei den 8-Damen und den magischen Quadraten) immer noch weitere denkbare Lösungen suchen. Daher steht die boolean-Instanzvariable '' | ||
* Beim Start des Sudoku-Lösers werden leere Zellen (bei denen kein Startwert vorgegeben war) als '' | * Beim Start des Sudoku-Lösers werden leere Zellen (bei denen kein Startwert vorgegeben war) als '' | ||
+ | * Achtet darauf, dass ihr Felder, die bereits vorbelegt sind, nicht überschreibt! | ||
{{: | {{: | ||
=== (A1) === | === (A1) === | ||
- | - Lade die {{ .:sudoku.zip |Vorlage}} herunter und mache dich rudimentär mit der Funktionsweise des Programms / der GUI vertraut. Du musst den bereits vorgegebenen Code **nicht** nachvollziehen. | + | - Lade die [[https://codeberg.org/ |
- Du kannst in der GUI einzelne Zahlen vorgeben und dann auf den Knopf " | - Du kannst in der GUI einzelne Zahlen vorgeben und dann auf den Knopf " | ||
- | - Implementiere | + | |
+ | - Im Unterverzeichnis '' | ||
+ | | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Nachfolgend findest du Tipps in Form von Pseudocode sowie Lösungsvorschläge. | ||
++++ Pseudocode Löse-Algorithmus | | ++++ Pseudocode Löse-Algorithmus | | ||
Zeile 59: | Zeile 68: | ||
</ | </ | ||
++++ | ++++ | ||
+ | |||
+ | **Tipp zur Methode '' | ||
+ | Wenn du die Methode '' | ||
+ | <code java> | ||
+ | private int[] spielfeld = new int[]{ | ||
+ | 1, | ||
+ | 1, | ||
+ | 1, | ||
+ | 1, | ||
+ | 1, | ||
+ | 1, | ||
+ | 1, | ||
+ | 1, | ||
+ | 1, | ||
+ | }; | ||
+ | </ | ||
+ | Die Zahlen kannst du editieren wie du sie magst (das 9x9 Format muss eingehalten werden) und anschließend die Methode '' | ||
+ | |||
+ | |||
++++ Lösungsvorschlag loeseSudoku()| | ++++ Lösungsvorschlag loeseSudoku()| |