Entwickler-Ecke

Freeware Projekte - Sudoku Creator das fertige Projekt 2.0


Namenlosnameless - Mo 03.01.11 21:46
Titel: Sudoku Creator das fertige Projekt 2.0
Hallo!

Darf ich euch mein neustes Projekt vorstellen?

Der Sudoku Creator!


Falls ihr die Anzahl an verbleibenden Zahlen manuell einstellt sollten für die Lösbarkeit nicht weniger als 25 Zahlen verbleiben.



aktuelle Version: 3.0

Features:

-Manuelles lösen am Computer!
-Farbunterscheidung von Zahleneingaben
-Eingabe zu Testzwecken
-Überprüfung ob eingegebene Zahl stimmen kann
-Laden funktioniert ohne verlust, von eingegebenen Zahlen
-Möglichkeit zur Eingabe von Kandidaten
-Eingabe mit der Tastatur

Features die geplant bzw. in Arbeit sind:


-Ausgabe von Sudokus die sicher Lösbar sind.


pic4



Nutzung der Lösemöglichkeit:

-mit klick auf ein Feld, dass nicht vom Computer vorgegebenwurde, dieses selcetieren.
-mit weiterem Klick auf dieses Feld, keyboard öffnene
-Kandidaten oder Zahlen eintippen (Kandidaten mit "Bestätigen" in das Sudoku eintragen, Zahlen einfach mit Klick darauf).
Wenn man statt einer Zahl Kanditaten eintragen will muss zuerst ein leeres Feld (durch Klick auf das rote X) erzeugt werden

Erklärung der Farben:
-schwarz: vom Computer vorgegebene Zahl
-blau: manuell eingegebene Zahl, die theoretisch stimmen kann
-rot: manuell eingegebene Zahl, die sicher nicht stimmt
-grün: nur zu Testzwecken eingefüllte Zahl

ACHTUNG: wenn eine Zahl blau ist, heißt dass nicht, dass das automatisch die richtige Zahl ist, nur dass momentan keine Regelverletzung vorliegt!
Grüne Zahlen werden nicht in die Berechnung, der möglichen Zahlen mit einbezogen, also sind niemals auslöser für eine Regelverletzung

Tastatureingabe
mit den Pfeiltasten bzw. W,A,S,D kann man über das Spielfeld navigieren.
Eingabe von Zahlen, mit dem Ziffernblock oder den Nummerntasten über den Buchstaben
Kanditaten können mit Alt+Zahl eingegeben werden.

Die Eingabemöglichkeit mit der Maus bleibt weiterhin erhalten!

viel Spaß!



Für Verbesserungsvorschläge, konstruktive Kritik, Lob usw. bin ich immer offen ;D


Trashkid2000 - Mo 03.01.11 22:15

Hallo,
na, sieht doch ganz nett aus. Für meinen Geschmack sind die beiden Buttons "Erstellen" und "Drucken" ziemlich groß geraten. Und die beiden Buttons für das Laden und Speichern sollten deutsche Labels erhalten, wenn denn alles im Programm deutsch ist.
Jedenfalls ist der Creator gut für jemanden, der nicht genug von Sudokus bekommen kann.
[Ich bewunder die Leute immer, denn soviel Langeweile habe ich nicht]

Ansonsten fehlt noch ein bisschen Fehlerbehandlung beim Speichern und Laden der Dateien. Ja, musste mal wieder den Extremtest machen. Was habe ich alles hinbekommen:
- eine FormatException
- eine IndexOutOfRangeException

Aber sonst sehr stabil, gut gemacht! Auch die Druckfunktion ist gut geraten.
LG, Marko


Namenlosnameless - Mo 03.01.11 22:32

Danke!

Das Problem mit der Format-Exeption wäre behoben!

Jz müsste ich noch wissen, wie du die IndexOutOfRange-Exeption ausgelöst hast!

Lg Christoph


Trashkid2000 - Mo 03.01.11 22:49

Die IndexOutOfRange-Exception tritt auf, wenn ich aus einer beliebigen Zeile der Datei einen Wert entferne.
Also die Anzahl der Zahlen, die durch das Semikolon gertrennt sind, zu gering sind. Wenn ich eine ganze Zeile entferne, dann gibt es eine NullReferenceException

Ich will wirklich nicht Dein Projekt schlecht machen, weiss aber, dass es beim Arbeiten mit Dateien meistens zu Problemen kommen kann. Und die wenigsten Benutzer spielen warscheinlich so in den Dateien rum...
Bin jedenfalls auf die nächste Version gespannt. Meinst Du mit "Resolver", dass man die erstellten Sodokus in dem Programm zu lösen versuchen kann, oder soll es möglich sein, ein Sodoku dort einzutragen, was automatisch gelöst wird? Das mit dem automatisch lösen hatte ich mal in Delphi programmiert.
LG


Namenlosnameless - Mo 03.01.11 22:53

wow an das herumspielen in Datein hab ich ned gedacht ;D

ich will beides machen!
Also die erstellten Sudokus im Programm manuell lösen
und auch welche eintragen, die dann der Computer macht!

Dann brauch ich nur noch einen neuen Namen für das Programm :D


Regan - Mo 03.01.11 23:01

Ist das Programm in .NET geschrieben oder benötigt man irgendwelche .NET Bibliotheken? Ich kann das unter Wine gar nicht problemlos öffnen :gruebel:
Des Weiteren wäre ein Screenshot nicht schlecht.


Namenlosnameless - Mo 03.01.11 23:09

Ja das Programm ist in .Net geschrieben. Ich habe nur Windows-eigene Bibliotheken verwendet.

Screenshots sind auf dem Weg ;D


Kha - Di 04.01.11 00:07

user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Ich kann das unter Wine gar nicht problemlos öffnen :gruebel:
Schon mit Mono probiert ;) ? Bei einem so einfachen Programm erwarte ich keine Kompatibilitätsprobleme.


jaenicke - Di 04.01.11 06:56

user profile iconNamenlosnameless hat folgendes geschrieben Zum zitierten Posting springen:
ich will beides machen!
Also die erstellten Sudokus im Programm manuell lösen
und auch welche eintragen, die dann der Computer macht!
Ja, sowas hatte ich auch schon programmiert, aber ich fand das Lösen deutlich einfacher als das Erstellen. ;-)
So gut wie bei dir hat das Erstellen bei mir nicht geklappt. :zustimm: (Ist schon ein paar Jahre her, habs auch nicht wirklich schön gemacht.)
Ob die dann lösbar waren, hab ich einfach mit meinem Solver festgestellt. ;-)


Namenlosnameless - Di 04.01.11 10:37

Wenn ich auf Solver umstellen will, muss ich ca 5 Zeilen + eine if-Abfrage im Code ändern

Das mit der Lösbarkeit und dem Solver drüberrennen zu lassen ist so eine Sache, da ein Computer jedes Sudokus lösen kann, einfach indem er probiert. Ein Mensch jedoch kann nicht probieren und verwerfen, also müsste ich im Programm Vorgangsweisen implementieren, die den Suchweisen von Menschen gleichen! Das ist nicht soo einfach.


Trashkid2000 - Di 04.01.11 10:43

Naja, das mit dem Lösen würde ich nicht durch rumprobieren machen.
Jedes Sudoku kann ja quasi durch Ausschlussverfahren gelöst werden.
So habe ich es (wenn ich mir denn mal ein Sudoku vorgenommen habe) auch immer gemacht.


Namenlosnameless - Di 04.01.11 10:49

Naja, nicht jedes Sudoku!
Das Mag bei leicht und mittel noch stimmen! Allerdings bei schwer wird man mit dem Ausschlussprinzip, irgendwann nicht mehr weiterkommen. Teilweise werden Logische Denkmuster benutzt, die das einfache "Schauen, für welches feld die Zahl nur eine Möglichkeit hat" weit übersteigen

hierzu: http://de.wikipedia.org/wiki/Sudoku unter Lösungsmethoden

Neue Version mit den Fehlerbehandlungen ist da!


Trashkid2000 - Mi 05.01.11 21:25

user profile iconNamenlosnameless hat folgendes geschrieben Zum zitierten Posting springen:
Naja, nicht jedes Sudoku!
Das Mag bei leicht und mittel noch stimmen! Allerdings bei schwer wird man mit dem Ausschlussprinzip, irgendwann nicht mehr weiterkommen. Teilweise werden Logische Denkmuster benutzt, die das einfache "Schauen, für welches feld die Zahl nur eine Möglichkeit hat" weit übersteigen
So langsam glaube ich das auch, wenn ich ein schweres Sudoku sehe, das generiert wurde. Da muss der Algo schon sehr gut sein, um das zu lösen..
user profile iconNamenlosnameless hat folgendes geschrieben Zum zitierten Posting springen:
Neue Version mit den Fehlerbehandlungen ist da!
Gut gemacht! Habe jetzt auch keinen Fehler hinbekommen.
Marko


jaenicke - Mi 05.01.11 21:30

user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
So langsam glaube ich das auch, wenn ich ein schweres Sudoku sehe, das generiert wurde. Da muss der Algo schon sehr gut sein, um das zu lösen..
Ich habe da zuerst das Ausschlussverfahren benutzt und dann einfach Backtracking. Geht aber auch noch besser, aber da hatte ich keine Lust und keine Zeit. ;-)

Ja, Fehler sehe ich soweit auch keine mehr.


Namenlosnameless - Do 06.01.11 01:17

okay Wenn ich mit Backtracking löse, heißt das ja nicht zwingend, dass es für den Menschen der es lösen will, lösbar ist!


jaenicke - Do 06.01.11 08:17

Doch, denn prinzipiell kann man auch als Mensch das so ausprobieren. Der Mensch macht das vielleicht etwas logischer als ein Algorithmus, aber prinzipiell genauso.
Ich habe da schon versucht logische Gewichte für die verschiedenen Möglichkeiten zu vergeben, aber besonders viel schneller ging das noch nicht.


Namenlosnameless - Do 06.01.11 21:42

Okay der nächste Schritt in Richtung vollständigkeit ist getan ;D

Version 2.0 ist Online (zu den Änderungen: bitte oben schaun)


Namenlosnameless - Fr 07.01.11 02:01

Wieder neue Version! 2.1


fireworker - Fr 07.01.11 11:06

Hallöchen, :-)

die neuen Features klingen interessant, würde sie gerne auch testen wollen.
Kriegen wir auch einen neuen Download? :-D

lg


Namenlosnameless - Fr 07.01.11 11:46

Ohh hab gerade gesehen, dass ich beim Raufladen, den Post nicht "Abgesendet" habe ;D

okay zur Nutzung der Features:
-mit klick auf ein Feld, dass nicht vom Computer vorgegebenwurde, dieses selcetieren.
-mit weiterem Klick auf dieses Feld, keyboard öffnene
-Kandidaten oder Zahlen eintippen (Kandidaten mit "Bestätigen" in das Sudoku eintragen, Zahlen einfach mit Klick darauf).
Wenn man statt einer Zahl Kanditaten eintragen will muss zuerst ein leeres Feld (durch Klick auf das rote X) erzeugt werden

Jz sollte alles oben sein


jaenicke - Fr 07.01.11 11:48

user profile iconNamenlosnameless hat folgendes geschrieben Zum zitierten Posting springen:
Der Download sollte soweit in Ordnung sein :D
Ich sehe nur noch die beiden Bilder als Downloads. :nixweiss:


Namenlosnameless - Fr 07.01.11 11:49

ich habs jetzt ausgebessert (erklärung siehe voriger post)


jaenicke - Fr 07.01.11 11:52

Ja, jetzt ist es da, sieht soweit gut aus. Nur ein Problem: schieb das Programm mal an den rechten Fensterrand bevor du das Popup öffnest. Dann ist es nicht mehr im sichtbaren Bereich. (Gut, hier kennt sicher jeder Alt + F4 :D)

Du solltest das aber besser auf die Seite packen, auf der es auch sichtbar ist. ;-)


Namenlosnameless - Fr 07.01.11 11:54

okay, wird gemacht ;D


Namenlosnameless - Fr 07.01.11 12:17

ist eingebaut!


Namenlosnameless - So 09.01.11 22:10

Version 3.0 mit Tastatursteuerung ist raufgeladen

nebenbei nochmals herzlichen Dank an user profile iconjaenicke der mir das Feature ermöglicht hat ;D


Trashkid2000 - Mo 10.01.11 07:46

Na, sieht doch nett aus. Auch das mit der Tastatursteuerung.
Was ich mich allerdings nun frage: Warum kann ich zwar mit der Tastatur navigieren, aber kann nicht einfach über die Tastatur die Zahlen eingeben? Würde ich persönlich viel praktischer finden. Aber das ist meine Meinung.
Marko


Namenlosnameless - Mo 10.01.11 11:01

Kann man!
Einfach mit den Zahltasten!
Siehe Erklärung im ersten Post!!


Namenlosnameless - Mo 10.01.11 20:41

Ich hab mir das Programm runtergeladen (hatte in der Früh nur das Handy), und der scheint soweit in Ordnung zu sein!

Also Fals, es irgendwie noch immer Probleme geben sollte, die Zahlen einzufüllen, muss es wohl irgendeine Inkompatiblität geben (wobei ich das eher als unwahrscheinlich empfinde da ich das Progamm auf XP, Vista, Win7 getestet, und keine Probleme gehabt)


Delphi-Laie - Di 11.01.11 17:12

user profile iconNamenlosnameless hat folgendes geschrieben Zum zitierten Posting springen:
Falls ihr die Anzahl an verbleibenden Zahlen manuell einstellt sollten für die Lösbarkeit nicht weniger als 25 Zahlen verbleiben.


Warum diese - mir willkürlich erscheinende - Einschränkung? Mir ist ein Sudoku bekannt, das mit sogar nur 17 Zahlen (!) gelöst werden kann, das allerdings sehr wahrscheinlich nicht vollständig determiniert, sondern nur mit Propieren (sog. Backtracking).

Und da komme ich bereits zu ersten Punkt: Eine Option, ob ein Sudoku rein determiniert gelöst werden kann oder ggf. auch das Probieren (wenn die Anzahl der Zahlen zu gering für eine rein determinierte Lösbarkeit ist) unumgänglich ist.

Die nächste Option: Die Elementeanzahl. Gewöhnlich werden Sudokus nur der Größe (3x3) x (3x3) angeboten. Die 2er Klasse ist vermutlich keine Herausforderung, die 4er Klasse dafür umso mehr, von der 5er-Klasse ganz zu schweigen. Allerdings nehmen damit aber eher die Unübersichtlichkeit und Lösungsdauer zu, das Sudokuerleben jedoch nicht (wenigstens nicht im gleichen Maße).

Weiterhin - ich habe mir jetzt Dein Programm nicht kopiert - wären optional statt der Ziffern (ich nehme an, daß Du welche benutztes) bzw. der Zahlen beim 4er Sudoku auch andere Elemente bzw. Symbole - vorzugsweise Buchstaben oder sogar kleine, lustige Bildchen - denkbar, hinsichtlich der Aversion vieler gegenüber der Mathematik vielleicht sogar angebracht (oder eine Wahloption, welche Symbole man verwendet). Wenn ich in den Zeitschriften etwas von "Zahlenlogik" lese, bekomme ich immer "einen dicken Hals" ob soviel Dummheit; das Lösen der Sudokus ist nämlich ein Algorithmus und hat mit Arithmetik nichts zu tun. Das ist zwar wirklich nur eine Oberflächlichkeit, für so manchen jedoch eine entscheidende, denn bei Zahlen schalten die meisten gleich ab (auch wenn ich das für mich nicht behaupten kann).

Letzlich, so meine Idee, kann man auch "Supersudokus" (meine Wortkreation) entwickeln, mit folgenden zusätzlichen Eigenschaften:

- auch an den Hauptdiagonalen ist jedes Element / Symobl und damit nur einmal vorhanden und/oder
- in den Nebendiagonalen ist zwar nicht jedes Element / Symbol der vorgegebenen Menge vorhanden, aber die, die vorhanden sind, sind es auch nur einmal.

Wenn das nicht so elend viel Arbeit bereiten und mich mehr interessieren würde, würde ich mich auch daranwagen.

So bleibt es erstmal bei diesen Anregungen.

Viel Spaß und Erfolg!

Delphi-Laie


jaenicke - Mi 12.01.11 02:00

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Letzlich, so meine Idee, kann man auch "Supersudokus" (meine Wortkreation) entwickeln, mit folgenden zusätzlichen Eigenschaften:
Damit machst du aber das Lösen einfacher, nicht schwieriger. ;-) (Nur die Generierung wird schwieriger.)
Denn durch die zusätzlichen logischen Möglichkeiten kann man auch mehr ausschließen.


Horst_H - Mi 12.01.11 10:08

Hallo,

user profile iconJack Falworth hat eine Liste von 100 17-er Sudoku's gehabt.
http://www.delphi-forum.de/viewtopic.php?t=63902
project100.txt
http://www.delphi-forum.de/download.php?id=4349

Ohne Quelltext kann man ja nicht sehen , wie Du Deine Sudoku reduzierst.
Aber wie in Wikepedia beschrieben, kann man erst einmal immer zufällige Ziffern entfernen, solange diese eindeutig bleiben, ist es ein einfaches Sudoko.
Dann kann man ja dazu übergehen, noch einen zu entfernen, dass es zweideutig wird.

Gruß Horst


Delphi-Laie - Mi 12.01.11 11:15

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Letzlich, so meine Idee, kann man auch "Supersudokus" (meine Wortkreation) entwickeln, mit folgenden zusätzlichen Eigenschaften:
Damit machst du aber das Lösen einfacher, nicht schwieriger. ;-) (Nur die Generierung wird schwieriger.)
Denn durch die zusätzlichen logischen Möglichkeiten kann man auch mehr ausschließen.


Das ist gewiß richtig, doch muß diese zusätzliche Startinformation die Lösungsfreude keineswegs schmälern, sondern ganz im Gegensatz: Gerade bei Sudokus, bei denen man probieren muß (auf Papier mit Bleistift & Radiergummi!), die Startinformation also ziemlich dürftig ist, kann es mit der Lösungsfreude ziemlich bald vorbei sein.

Davon abgesehen, halte ich das Lösen der Sudokus für ein stinklangweilige, weil rein algorithmische Tätigkeit (analog dem m.E. völlig zurecht verhaßten Rechnen im Kopf). Nur das Erstellen des Algoritmus' ist m.E. eine Herausforderung.


jaenicke - Mi 12.01.11 11:50

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Davon abgesehen, halte ich das Lösen der Sudokus für ein stinklangweilige, weil rein algorithmische Tätigkeit (analog dem m.E. völlig zurecht verhaßten Rechnen im Kopf).
Es sind beides Übungen für das Gehirn, insbesondere wenn man sich die Möglichkeiten beim Sudoku merkt und nicht aufschreibt. (Und genau so mache ich das auch, deshalb hat mein Sudoku Solver auch keine Möglichkeit mögliche Zahlen einzugeben. :D)


Namenlosnameless - Mi 12.01.11 19:27

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNamenlosnameless hat folgendes geschrieben Zum zitierten Posting springen:
Falls ihr die Anzahl an verbleibenden Zahlen manuell einstellt sollten für die Lösbarkeit nicht weniger als 25 Zahlen verbleiben.


Warum diese - mir willkürlich erscheinende - Einschränkung? Mir ist ein Sudoku bekannt, das mit sogar nur 17 Zahlen (!) gelöst werden kann, das allerdings sehr wahrscheinlich nicht vollständig determiniert, sondern nur mit Propieren (sog. Backtracking).

Und da komme ich bereits zu ersten Punkt: Eine Option, ob ein Sudoku rein determiniert gelöst werden kann oder ggf. auch das Probieren (wenn die Anzahl der Zahlen zu gering für eine rein determinierte Lösbarkeit ist) unumgänglich ist.



Erstmal Danke :D, wenn ich noch Lust an dem Projekt finde, werd ich bestimmt ein paar Sachen davon umsetzen!

zu Punkt1: Ich habe noch keinen Algo implementiert, der sich darum kümmert, ob ein Sudoku eindeutig lösbar ist,
zu Punkt2: Ist bereits in Arbeit :D