[GELÖST] Levelgenerator Sudoku - Algorithmus?
Übersicht

CO2ehemals "SirMO"Betreff: [GELÖST] Levelgenerator Sudoku - Algorithmus? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich versuche mich gerade an einem Generator für ein Sudoku-Level. Der Generator soll ein Sudoku-Level nach den bekannten Sudoku-Regeln erstellen. Dazu habe ich mir eine Klasse TSudoku erstellt, welche alle benötigten Funktionen und Variablen enthält BlitzMax: Type TSudoku Zur Erklärung: - Field Data:Int[9, 9]: Dies ist das Spielfeld später - Method CreateGame(DiffLevel:Int): Dies ist der Spielfeld-Generator, später muss eigentlich noch überprüft werden, ob sich die Zahl in einem Block befindet, sowie der Schwierigkeitsgrad (DiffLevel) muss noch umgesetzt werden. - Method GetValueAtPos:Int(PosX:Int, PosY:Int): Diese Funktion liefert den Wert an Position X, Y zurück - Method CheckValueIsInRow:Int(Row:Int, Value:Int, Size:Int): Diese Funktion liefert 0 zurück, sollte der angegebene Wert nicht in der angegebenen Reihe vorkommen, sonst 1. Size ist die Angabe der Spielfeldgröße (Für eventuelle Spielvariationen) - Method CheckValueIsInCol:Int(Col:Int, Value:Int, Size:Int): Diese Funktion liefert 0 zurück, sollte der angegebene Wert nicht in der angegebenen Spalte vorkommen, sonst 1. Size ist die Angabe der Spielfeldgröße. Das Problem ist: Wenn ich ein Sudoku erstellen will mit BlitzMax: Global Sudoku:TSudoku = New TSudoku Benötigt der Generator unheimlich lange... Ich weiß aber auch nicht, wie ich die Regeln anders Abfragen soll (Das überprüfen, ob die Zahl sich bereits in einem Block befindet ist noch gar nicht umgesetzt). |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
- Zuletzt bearbeitet von CO2 am Mi, Feb 13, 2013 22:14, insgesamt einmal bearbeitet
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
erste unausgereifte idee, wie mans dann im endeffekt umsetzt müsste man sich noch gut überlegen:
es gibt einen "pool" von zahlen für jedes feld, die das feld noch annehmen kann - genau genommen gibt es sogar 3 pools pro feld einmal (zu anfang) die zahlen 1-9 für die jeweilige reihe, dann für die spalte und für den block dann wird feld für feld "gefüllt" zur verfügung stehen nur zahlen, die in der schnittmenge der 3 zugehörigen pools liegt daraus wird eine zufällig gewählt sollte keine zahl mehr in frage kommen (leere schnittmenge) benötigst du backtracking (teuer, aber da wird man wohl nicht drumrum kommen, bei keinem ansatz - denke ich zumindest) am ende hast du ein zufälliges, fertiges sudokufeld danach musst du schritt für schritt zahlen "entfernen", die sich nach den regeln ableiten ließen. das ist zwar viel arbeit, aber eigentlich relativ einfach zu implementieren denke ich. klingt kompliziert, ist es vermutlich auch - zumindest komplizierter als die meisten anfangs denken würden, wenn man sagt "ich mach mal nen sudoku generator" sollte es einfachere lösungen geben: nur her damit, würde mich interessieren |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt schon einige Sudoku Generatoren im Forum, da kann man sich bestimmt etwas abschauen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Zur Idee von BBPro2 gibt es diesen Link: Link Dort ist das ganze noch etwas genauer beschrieben und erklärt. Am Ende ist der Algorithmus auch ziemlich schnell. ![]() Viel Spaß. Gruß, Tennisball |
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank für die Antworten!
Werde mal dem Link nachgehen und schauen was sich draus entwickelt ![]() Sollte ich den Code in BlitzMax übersetzen poste ich ihn natürlich... solange ist das Thema als [GELÖST] getaggt. |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group