Sudokus erstellen....aber wie?

Neue Frage »

das_pseudonym Auf diesen Beitrag antworten »
Sudokus erstellen....aber wie?
hey leute,

schon lang nicht mehr hier gewesen. kanns verstehen wenn man mich hier nicht mehr kennt smile . trotzdem grüße an alle die mich wiedererkennen Augenzwinkern

aber hier mal zu meinem problem:

mache dieses jahr meine matura und um zu dieser antreten zu dürfen muss ich 2 projekte machen, davon ist eines - was ich mir selbst ausgesucht hab - eine client-server-applikation worin ein sudoku-generator implementiert ist.

wäre an sich gar nicht so schwer nur stehe ich vor dem problem dass ich nicht weiß wie ich sudokus mit 3 verschiedenen Schwierigkeitsstufen erstelle.

also hab ich mich mal zurückerinnert und als helle köpfe seid ihr mir hier in erinnerung geblieben. Gott also hoffe ich dass sich von euch schon jemand gedanken darüber gemacht hat, und schon 1-2 vorgehensweisen o.ä. herausgefunden hat.smile

wäre echt ein hit wenn ihr mir weiterhelfen könntet.

MfG

pseudo
zt Auf diesen Beitrag antworten »

Edit: Unten steht nur die Idee der Bewertung. Nicht die Idee ein X-Sterne-Sudoku zu erstellen.

Ich habe letzten Sommer angefangen einen Sudoku-Löser (in PHP) zu schreiben. (Ist allerdings nicht fertig geworden) Aber man erkennt sofort die einzelnen Schwierigkeitsstufen, wenn man den "Löser" selbst implementiert.

Tipp: Nimm dir ein Sudokufeld (mittel) und löse einfach ohne wirklich dabei nachzudenken. Hast du einen Schritt gemacht, schaust du nach "was" du gerade gemacht hast und wie man das ganze allgemein(er) schreiben kann. Jetzt implementierst 2-3 dieser einfachen "Löser" und stufst sie als "leicht" ein.

Jetzt lädst du ein Sudoku-Feld (mittel) in deinen Sudoku-"Löser" und lässt es soweit auflösen, bis der Löser nicht mehr weiter weiss. Jetzt versuchst du im nächsten Schritt wieder selbst zu denken und die nächste Lösung zu finden, welche du wieder verallgemeinerst und implementierst. Anschließend implementierst du weitere Mittelstufen-"Löser" bis du so zeimlich jedes als "mittel"-engestuftes Sudoku lösen kannst.

Bis hier hin solltest du - zumindest in PHP - maximal 150 Zeilen Code verplempert haben.

Das selbe (wie oben) machst du jetzt mit Hardcore-Sudokus. Hier wird's allerdings (vermute ich) richtig komplex.

Um jetzt ein Sudoku einstufen zu können: Du löst ein Sudoku rekursiv, wobei "einfach"-Löser so oft aufgerufen werden, bis keine Lösung mehr gefunden wird. Das selbe dann mit den "mittel"- und "hardcore"-Lösern. Da du hier ja "nur" eine 3-Sterne-Einstufung möchtest ist klar: wenn das Sudoku mit 70%-100% "leicht"-Lösern gelöst werden kann, dann ist es "leicht". Müssen mehr "mittel"-Löser als "leicht"-Löser und wesentlich weniger "hardcore"-Löser verwendet werden, so ist das Sudoku "mittel". Übrig bleiben dann ja nur "hardcore"-Sudokus.

Anhand der Anzahl der Zahlen im Sudoku könnte man vermuten, dass bei weniger Zahlen das Sudoku umso schwerer ist. Ist es aber leider nicht immer.

Eine Spezifikation gibt es dafür ja imho nicht. Naja, war' nur 'ne Idee. (eben durch Lösen des Feldes)
Dual Space Auf diesen Beitrag antworten »
RE: Sudokus erstellen....aber wie?
http://de.wikipedia.org/wiki/Sudoku#Algorithmus

Dabei steht im Punkt 2, wie man Schwierigkeiten implementieren könnte.
das_pseudonym Auf diesen Beitrag antworten »
Reply
@zt: danke für die ausführliche antwort, habe mal einen ansatz wie man sudokus erstellen könnte. klingt ziemlich plausibel. pro schwierigkeits stufe eine "lösungsregel mehr" zu implementieren. schwierig wird nur der hardcore-löser der auch implementiert sein muss da ich ja auch abprüfen muss ob das sudoku überhaupt a) lösbar ist und b) auch eine unique lösung hat.
werd mich mal mit dem ansatz beschäftigen

@Dual Space: wikipedia hab ich schon durchforstet und bin auch auf diesen artikel gestoßen, welcher jedoch nicht die X-Sterne-Kreiierung beinhaltet, da die schwierigkeit von sudokus ja nicht nur von der anzahl der vorgegebenen zahlen abhängt sondern auch von deren konstellation desweiteren muss es ja auch eindeutig lösbar sein was in dieser idee nur schwer realisierbar ist. trotzdem danke für diesen beitrag smile

würde mich noch über weitere meinungen ideen o.ä. freuen

MfG

pseudo
das_pseudonym Auf diesen Beitrag antworten »
Zahlenreihen
tag auch

mir stellt sich ein kleines problem in den weg beim kreieren eines sudokus

und zwar möchte ich ein sudokuspielfeld ganz und gar regelkonform ausfüllen (programmiert wird in java), jedoch bräuchte ich dafür einen algorithmus, dass dies zufällig passiert. verwirrt


Idee! meine idee wäre alle 9-stelligen zahlenreihen, in denen die zahlen 1-9 jeweils nur einmal auftreten, zu eruiern und die dann durch sequentielle überprüfung nach und nach von oben nach unten in eingefüllt werden.

[Bsp. für die Zahlenreihen: 123456789, 132456789, 134256789,....]

meine frage: hat jemand eine bessere idee?
oder weiß jemand wie ich alle zahlenreihen lt. der Restriktion oben herausfinde?

Hilfe
Hoffe jemand kann mir hier helfen.

MfG


pseudo
<><> Auf diesen Beitrag antworten »
sudoku erstellen
Ein zufälliges sudoku zu erstellen ist ganz einfach:
man macht sich ein vorlagesudoku und tut dies veraändern.
zB:
123 456 789
456 789 123
789 123 456

234 567 891
u.s.w

jetzt kann man die splaten und reihen, die innerhalb eines kästchen stehen vertauschen! so oft wie man will!
und dann kann man noch die kästchen vertauschen, die übereinander oder nebeneinander stehen.

aber welche zahlen man weglassen kann weiß ich leider auch nicht smile ,
würds aber auch gern wissen....
 
 
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »