Sudoku
-
Hallo,
ich bin grad dabei ein Sudoku Spiel unter MFC zu schreiben.
Bis jezze hat alles geklappt aber nun kommt folgendes Problem.Ich lasse die Zahlen in den einzelnen Blöcken mit der srand Funktion per zufall bestimmen und das dann in ner do ..while Schleife wo ich abfrage ob die Zahl schon mal vorkommt. Nun hab ich 4 Blöcke fertig die funktionieren, wenn ich aber nun den 5. Block reinmache stürtzt das Programm ab. CPU Auslastung ist bei 100% ich denk mal das das dann einfach zu viel für C is oder so. Nun meine frage gibt es eine andere Möglichkeit um Zufallszahlen zu generieren und zu vergleichen ?
mfg
steve
-
Was genau meinst du mit "Block"? Normalerweise dürfte rand() keine so hohe Auslastung verursachen, aber womöglich hast du irgendwo eine Endlosschleife eingebaut. (etwas Code wäre hilfreich, um das Problem einzugrenzen)
-
Hallo,
also :
do { m_feldeins4=(rand()%9)+1; } while (m_feldeins4 == m_drei4 || m_feldeins4 == m_drei5 || ...so sind alle aufgebaut damit ermittel ich die Zufallszahlen und vergleiche dann mit den anderen.
Also ich hab 9 Blöcke a 9 Anzeige Feldern (m_feldeins1 - m_feldeins9 <-- das ist zum beispiel der erste Block)
-
so kleiner Nachtrag ich wees nun das der Fehler in Block 5 ist und da in den ersten 3 Anweisungen denn wenn ich diese auskommentiere funktionierts.
-
du packst die 10 zahlen einfach in ein array und vertauscht danach einfach beliebig 2 werte.
damit ersparst du dir die aufwändigen überprüfungensmeagol
-
Vielleicht solltest du anstelle von 9 (btw, für ein vollständiges Sudoku benötigst du 81 Felder - und die Zusammenhänge sind durch die Zeilen/Spalten/9er-Blöcke etwas komplizierter) Einzelvariablen ein Array verwenden und dann mit find() überprüfen, ob der gerade ausgewählte Wert schon vorkam.
-
hab Fehler gefunden hatte ne Endlosschleife in der zweiten Zeile des 5. Blocks.
Nun gehts
-
willst du mit den rand funktion spiele generieren welche man später dann ausfüllen muss??
Dafür musst duc doch das Back- TRacking verfahren anwenden, kannst ja nich einfach zufälltig zahlen reinschreiben..sollte ja später auch ein mögliche ergebnis raus kommen?
-
Hi,
hier ist ein ganz netter Link. Unten auf der Seite sind 2 Methoden erklaert wie man ein Sudoku loesen, bzw. damit ja dann auch erstellen kann.
http://sudokugarden.de/de/loesen/
Arbeite gerade selber mehr oder weniger an nem Sudoku.

-
Kenner des Sudoku schrieb:
...sind 2 Methoden erklaert wie man ein Sudoku loesen, bzw. damit ja dann auch erstellen kann.
Wieso sollte "kann lösen" auch automatisch zu "kann erstellen" führen?
Nönönö... so einfach ist das nicht.
-
per back tracking verfahren kann man die möglichen komibnation berechen...
danach löscht man felder.. und ver sucht selber das spiel zu lösen aus den zahlen die noch übrig sind!!
einfach so zahlen per zufall zu generieren ist blödsin, da man zu keiner lösung kommen kann!!!
1. erst mögliche lösungen berechnen lassen
2. aus den lösungen felder löschen3. selber ausfüllen das man wieder zu lösung kommt
-
Hi,
@hustbaer:
Ist man in der Lage es perfekt loesen zu koennen, kann man halt per Rekursion Zahlen einsetzen und mit dem 'Loesen' immer wieder testen ob es noch ein regulaeres Sudoku ist.