uh, is des scha spät
Nacht Topic (22 - 7 uhr)
-
-
ja so ist das
die zeit vergeht man wird alt und älter bis man stirbt -
Zur zeit noch nicht
Ich brauch nen Syntax, der die Sudokus leert, so damit sie lösbar bleiben^^
Zur Zeit gibts nur "Einsteiger" und "Anfänger"
Bald kommt "Könner"Aber für die schwereren hab ich echt noch keine ahnung
-
Zitat
Erstellung neuer SudokusSchwieriger als das Lösen eines Sudoku ist dessen Erstellung.
- Eindeutige Lösung: Es darf nur eine korrekte Lösung existieren.
- Gewünschter Schwierigkeitsgrad: Die Anzahl der vorgegebenen Ziffern bestimmt nicht allein den Schwierigkeitsgrad. Die Anordnung spielt eine entscheidende Rolle.
Algorithmus- Belegung des gelösten Sudokus erstellen
- 1. Weg: Ein leeres Sudokufeld wird Zelle für Zelle durch „Auswürfeln“ (Zufallsgenerator) mit Ziffern befüllt. Sobald es zu einem Regelverstoß kommt, muss per Backtracking-Methode eine andere Belegung probiert werden. Dies ist weniger trivial als beim Lösen des Sudokus: Da eine möglichst „zufällige“ Belegung des Sudokufeldes benötigt wird, kann man nicht einfach alle Ziffern der Reihe nach durchprobieren. Es hindert aber nicht, alle Ziffern, sobald sie einmal „ausgewürfelt“ wurden, als künftig – für die jeweilige Zelle – gesperrt „abzuhaken“ (in einer Tabelle zu markieren)
- 2. Weg: Neun Einsen ohne Regelverstoß im Puzzelfeld verteilen. Dann neun Zweier, neun Dreier, usw. verteilen. Auch hier muss ein Backtracking-Algorithmus angewandt werden.
- 3. Weg: Man füllt eine Zeile oder eine Spalte in beliebiger Reihenfolge mit den erlaubten Ziffern, verschiebt dann mit jeder weiteren Zeile/Spalte die Ziffernfolge, bis man am Schluss alle möglichen Varianten untereinander/nebeneinander in einer n × n-Matrix vorliegen hat. Dies alleine wäre ein äußerst trivial zu lösendes Rätsel, da sich die Ziffernfolgen wiederholen; deswegen sollte man über erlaubte Transformationen diese Matrix nun schrittweise so verändern, dass die Ursprungsziffernfolge sowie die ausgeführten Transformationen nicht mehr nachvollziehbar sind. Erlaubte Transformationen sind z. B. das Spiegeln (vertikal, horizontal, schräg), das Rotieren, das Vertauschen ganzer Zeilen oder Spalten, sofern sie innerhalb eines Mini-Quadrates bleiben, das Vertauschen ganzer Zeilen und Spalten von Miniquadraten, oder das komplette Austauschen zweier Ziffern. Etliche dieser Transformationen hintereinander verwischen (fast) alle Hinweise auf die ursprüngliche Ziffernfolge. Von den hier vorgestellten Erstellungsmethoden ist diese die am wenigsten aufwendige aber rechenintensivste.
- 4. Weg: Aus einem vorhanden Sudoku durch Transformation ein „neues“ Sudoku erstellen. Mögliche Transformationen sind etwa das Drehen und Spiegeln des Brettes, die Vertauschung von Zeilen innerhalb eines Blocks oder von ganzen Blöcken, sowie das elementweise Anwenden von Permutationen.
- Zur Lösung passendes Sudoku-Rätsel erzeugen
- Wiederum durch „Auswürfeln“ werden je nach Schwierigkeitsgrad eine Anzahl Ziffern wieder entfernt (typischerweise so dass zwischen 22 und 36 Ziffern verbleiben). Ohne weitere Kontrolle kann es hierbei aber passieren, dass das Rätsel trivial (langweilig) oder nicht mehr eindeutig lösbar wird.
Dabei können auch andere Varianten zum Zug kommen. Wie das Beispiel einer Freeware (RedMill Sudoku Resolver) aufzeigt, wird für das Generieren von Sudokus eine geringe Anzahl Zufallszahlen zufällig, jedoch unter Einhaltung der Regeln im Spielfeld verteilt und das Sudoku fertig gerechnet. Bei der Berechnung wird zuerst solange nach Feldern mit nur einer Möglichkeit gesucht, bis keine solche Felder mehr vorhanden sind. Wird das Sudoku dadurch nicht aufgelöst, wird eine Kopie (Instanz) des Spiels erstellt um die Backtracking-Methode zu ermöglichen. Durch das Backtracking können Annahmen getestet werden. Mit Wechselwirkung der Annahmen und der Absuche der Felder mit nur einer Möglichkeit wird das Sudoku fertig gerechnet. Geht das Sudoku nicht auf, wird die vorherige Instanz des Spiels verwendet und eine andere Annahme getestet. Geht das Sudoku auf keinen Fall auf, wird die erste Instanz verwendet und darin eine der Zufallszahlen gelöscht und das Ganze wiederholt. Am Ende wird per Zufallszahl, je nach Schwierigkeitsgrad, Zahlen im fertig gerechneten Sudoku gelöscht und angezeigt, wie dies oben beschrieben ist. Das im Hintergrund fertig gerechnete Sudoku wird dabei als Schattenkopie für Spielhilfen verwendet.
Das sollte dir helfen -
Danke aber das hilft mir genau 0
Ohne Beschreibungen kam ich so weit:
Erstellung: Prototyp (der richtig, und immer der selbe ist) wird erstellt, dann werden die Zeilen 1,2,3 durch gemischt, Zeilen 4,5,6 und Zeilen 7,8,9. Dann das selbe mit den Spalten. Zum Schliss werden 30 mal 2 zufällig generierte (1 bis 9) Zahlen getauscht
Damit wird mal immer ein zufällige Sudoku erstellt.
Das ganze wird gespeichert und liegt als Text-Format nun in ner MySQL-Daten.Dann gibts bis jetzt 2 berechnungssyntax, die das sudoku leeren:
Einsteiger: 17 Zahlen werden zufällig gelöscht (warum 17? weil so das sudoku immer eindeutig bleibt)
Anfänger: Erst der Einsteiger-Syntax. Dann wird eine zufällige Reihenfolge von Feldern Bestimmt, die durchgegangen wird. Dabei wird geprüft welche Zahlen noch in das Feld eingesetzt werden könnten, wenn es leer wäre, durch das Ausschlussverfahren -> Welche Zahlen sind in der Spalte? Welche in der Zeile? Welche in dem neuner-Quadrat?
Wenn nur eine Zahl dabei übrig bleibt, wird gelöscht.---------------------
Damit bleibt das Sudoku bis jetzt immer eindeutig, aber einfach
Und wie ich schwierigere Möglichkeiten machen kann, steht bei dir nicht drin, und das will ich eigentlich auch gar nicht irgendwo lesen. Will mir eigene Algorythmen überlegen, sonst könnte das ja jeder -
Wahaaaa! Die JavsScript-Steuerung klappt jetzt endlich in FF, Opera, Safari, Netscape Navigator und IE7 (hab leider keine anderen zum testen)
Jetzt gibts nur noch ein problem: Netscape Navigator kennt 'readyState' bei Ajax nicht, also kann er nicht überprüfen, ob eine antwort gekommen ist -.-
-
huhu
was macht ihr so?
ich geh jetz gleich ins bett (so früh ) -
Schaue Wrestling und geh auch gleich pennen Morgen muss ich schon um 10:30 aufstehen
-
ich code
und freu mich über mein neues paar schuhe, das ich mir gerade gekauft hab, dunkelblaue chucks -
Schön, dass dus nur mit JS und PHP machst, das könnte eventuell auch auf der Konsole klappen.^^
Naja, xorg ist jetzt wieder wunderbar und ich seh alles übersichtlich im FF... -
Ja ich hab meinen X-Server auch mal vernichtet^^
Ohne nen kumpel htte ich mich durch die Konsole kämpfen müssen, wovon ich noch kaum ahnung hab^^ -
ich geh auch schon ins bett da morgen wieder schule ist
-
ich bin noch da^^ noch ne weile
-
Das erste mal, dass ich in diesen Thread reinschreiben
Geh aber jetzt auch pennen.
Weil ich morgen um 5:30 Uhr wieder aufstehen muss -.-
Aber vielleicht guck ich dann nochmal hier rein -
ich zocke
Super Smash Brother =Dund du?
-
oh wie schwach^^
Ich werd jetzt weiter coden^^ -
ich glaub ich hol mir nochmal was zu futtern
-
gute idee, hab auch hunger^^
aber ich bin zu faul um aufzustehen -
Driver, das ist eine gute Idee
Vielleicht vergess ich beim Anblick von Essen die PHP-Syntax O.o
(die schwirrt mir grad überall rum, egal was ich sehe, ich sehe diese verfluchten Codes -.-'') -
DarkSyranus: Das erinnert mich irgendwie an Matrix^^
-