Autor Beitrag
XUDO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: So 21.12.08 17:46 
Sudoku-Lösung

Es gibt eine ganze Reihe von Lösungsprogrammen, die sogar im
gegenseitigen Wettbewerb angewendet werden, aber im Ablauf nicht
nachvolllziehbar sind, ich meine damit, daß der Lösungsweg unsichtbar ist.

Dieses arbeitet anders, und man kann vom ihm lernen.

Es arbeitet nicht wie manche Menschen mit Versuch und Irrtum, also Bleistift und Radiergummi, sondern streng logisch - es trägt eine Ziffer erst dann als Lösung ein, wenn keine andere möglich ist.
Die Vorbedingungen hierzu, also das Bereinigen des Spielfeldes / das Entfernen nicht möglicher Ziffern in einem Einzelfeld, führt es selbst durch.

Andererseit verweigert es die weitere Mitarbeit dann, wenn es logisch nicht weitergeht - es gibt Sudokus, die sich **logisch** nicht zu Ende lösen lassen.

Man kann die Lösungsschritte einzeln verfolgen.
Im Grunde arbeitet es (nahezu) so, wie ich selber Sudokus löse - daher die hohe Versionsnummer, denn bis alle Bio-Überlegungen bei vollem Blick auf das Spielfeld auf Maschinen-Verfahren umgesetzt waren, hat es doch ein wenig gedauert: Fand ich eine logische Lösung und das Programm nicht, so hatte ich ihm noch nicht alles beigebracht - heute ist es manchmal besser als ich und hat eine logische Weiterführung, wenn ich selbst nicht weiterkomme.

Ein Mensch überblickt ein 3x3-Quadrat und dessen Nachbarn, eine Maschine / ein Programm braucht hierzu eine ganze Menge exakt definierter Schritte - übersieht dabei aber absolut nichts - falls richtig und umfassend erstellt.

Möglicherweise führt das schrittweise Verfolgen der Lösungswege dieses
Programmes die/den eine/n oder andere/n zu neuen Lösungswegen.

Es würde mich interessieren, ob noch Fehler oder Lücken vorhanden sind, denn ich selbst bin auch keine Maschine...
Da das Programm eine Aufgabe / einen Feldinhalt speichern kann, wäre eine interessante Ausgabe auch übermittelbar. (Inhalt.dat)

XUDO
Einloggen, um Attachments anzusehen!
XUDO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Mi 24.12.08 14:25 
Titel: Zusatz zum Sudoku
Vier SUDOKU-Beispiele bzw vier INHALT.[DAT]:

Nummer 1 ist nur lösbar wenn links oben in der Ecke eine 8 eingetragen
wird; bei Nummer 2 fehlt ganz rechts oben eine 9 und Nummer 3 benötigt im zentralen Mittelfeld eine 2, also Beispiele für logisch nicht lösbare ... nur per Try and Error.
Das jeweils zu verwendende muß natürlich in INHALT.DAT umbenannt werden und sollte im gleichen Verzeichnis wie die EXE stehen.

XUDO

PS: Da "vier" nicht geht, also nur drei.
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von XUDO am Mo 29.12.08 10:55, insgesamt 2-mal bearbeitet
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 24.12.08 16:29 
Das gibt es doch nicht! Vor einer etwas längeren Zeit hatte ich genau die selbe Idee, ein Sudoku zu lösen. Mein Programm scheiterte aber leider schon an der GUI :(

Ich habe auch versucht, die Strategie auf dem Papier durchzuführen, aber irgendwann wurde das mir zu blöd. Ich blieb aber bei der Ansicht, dass so jedes beliebige Sudoku zu lösen ist.

Leider habe ich gerade überhaupt keine Zeit, mir dein Programm anzuschauen. Aber ich werde es sicherlich nachholen.

Grüße,
Yogu
XUDO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Do 25.12.08 14:03 
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
... dass so jedes beliebige Sudoku zu lösen ist....


Ist es aber nicht, Yogu, daher die Beispiele.
Das Programm löst Schritt für Schritt logisch, nicht mit Bleistift und Radiergummi wie mancher ratende Mensch; ebenso mache ich es auch, und daher stoße ich manchmal auf nicht lösbare.
Das bedeutet, daß die Aufgabe entweder nicht eindeutig ist oder zu wenig vorgegebene Ziffern enthält, die man nur mit Raten und ggf. streichen finden oder auch nicht kann.

XUDO
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 25.12.08 14:52 
user profile iconXUDO hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
... dass so jedes beliebige Sudoku zu lösen ist....


Ist es aber nicht, Yogu, daher die Beispiele.

Oh, gibt es doch "unlösbare"?

user profile iconXUDO hat folgendes geschrieben Zum zitierten Posting springen:
Das Programm löst Schritt für Schritt logisch, nicht mit Bleistift und Radiergummi wie mancher ratende Mensch

Genauso habe ich das ja auch probiert. Ich habe mich dumm gestellt, und "Roboter gespielt". :)

user profile iconXUDO hat folgendes geschrieben Zum zitierten Posting springen:
Ebenso mache ich es auch, und daher stoße ich manchmal auf nicht lösbare.
Das bedeutet, daß die Aufgabe entweder nicht eindeutig ist oder zu wenig vorgegebene Ziffern enthält, die man nur mit Raten und ggf. streichen finden oder auch nicht kann.

Das ist dann aber kein richtiges Sudoku, wenn es nicht eindeutig ist.

Wie dem auch sei, ich mag Sudokus :D
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Fr 26.12.08 15:11 
Hmm... ich wusste gar nicht, dass es da noch andere Verfahren gibt? Also ich löse Sudokus eigentlich immer so. Und ich bin zu folgender Erkenntnis gekommen: Die wenigsten Sudokus lassen sich so lösen. Meistens nichtmal die Mittelschweren.
XUDO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Fr 26.12.08 15:26 
Hallo Jakob,

dann teste doch einmal das Programm an den nicht lösbaren Mittelschweren.

XUDO
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Fr 26.12.08 16:32 
Hi :D

Ein Sudoku ist ein mathematisches Gebilde. Ich würde zwei alternative Lösungen, also eine Lösungsmenge auch als Lösung bezeichnen ;)

Gerade, dass es z.B. nur 2 oder gleich 500 Löungen gibt, sollte imho dann das Ergebnis einer Analyse sein.

Die meißten "unlösbaren" lassen sich aber doch logisch eindeutig lösen, nämlich durch ausprobieren. Was du meinst ist eventuell, dass man mit Axiomen nichtmehr weiterkommt. Hier setzt dann Bruteforce ein.

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 26.12.08 17:15 
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Die meißten "unlösbaren" lassen sich aber doch logisch eindeutig lösen, nämlich durch ausprobieren. Was du meinst ist eventuell, dass man mit Axiomen nichtmehr weiterkommt. Hier setzt dann Bruteforce ein.
Richtig, das habe ich auch getestet bei meinem Programm, indem ich einfach mal nicht bei einer Lösung angehalten habe. Das hat dann zwar sehr lange gedauert, aber letztlich wurde dann normalerweise keine weitere Lösung gefunden. Genau das macht ja eben ein (echtes) Sudoku aus.

Jedenfalls sind in manchen Zeitschriften ja Sudokus verschiedener Schwierigkeitsstufe drin. Die einfachen lassen sich rein logisch lösen, die schwereren nicht. Trotzdem sind die aber i.d.R. eindeutig lösbar.
XUDO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Sa 27.12.08 10:25 
[quote="user profile iconjaenicke"(540848)]
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:

Jedenfalls sind in manchen Zeitschriften ja Sudokus verschiedener Schwierigkeitsstufe drin. Die einfachen lassen sich rein logisch lösen, die schwereren nicht. Trotzdem sind die aber i.d.R. eindeutig lösbar.


Hallo jaenicke,
ein solches würde mich sehr interessieren.
Vielleicht stellt du einmal die INHALT.DAT davon hier hinein.
Machbar ist das mit meinem Programm nach der Eingabe der Ziffern und Speichern; Umfang ist lediglich 1 KB.
XUDO

PS: Hier kommt eines von heute, 27.12. aus dem Schleswig-Holsteinischen Zeitungsverlag, Wochenendbeilage, angeblich sehr schwer.
Es ist logisch ohne Raten und Radieren zu lösen, das Programm schafft es
ebenfalls und es ist eindeutig.
Da die Endung DAT hier verboten ist, mußte ich in TXT umbenennen.
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von XUDO am Sa 27.12.08 10:47, insgesamt 1-mal bearbeitet
XUDO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Sa 27.12.08 10:32 
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Hi :D

Ein Sudoku ist ein mathematisches Gebilde. Ich würde zwei alternative Lösungen, also eine Lösungsmenge auch als Lösung bezeichnen ;)
Gerade, dass es z.B. nur 2 oder gleich 500 Löungen gibt, sollte imho dann das Ergebnis einer Analyse sein.
mfG,


Hallo Hidden,
ein Soduko mit zwei oder mehr Lösungen? Das möchte ich sehen!
Natürlich nicht ein fast leeres Feld mit einer einzigen Ziffer - das ist keine sinnvolle Lösungs- sondern dann eine Konstruktions-Aufgabe, eine angefangene und nicht beendet Neuerstellung.
Wenn es mehrere Lösungen gibt, handelt es sich um eine nicht zu Ende geführte Erstellung aber nicht um eine Lösungsaufgabe.
XUDO
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 27.12.08 12:12 
user profile iconXUDO hat folgendes geschrieben Zum zitierten Posting springen:
Wenn es mehrere Lösungen gibt, handelt es sich um eine nicht zu Ende geführte Erstellung, aber nicht um eine Lösungsaufgabe.
Das ist eine Definition :zwinker:

Aber gut, wenn du es so ausdrücken willst :) Beim Erstellen eines Sudokus(wenn man es denn mal nicht rückwärts macht) interessiert aber schon, wie viele Sudokus daraus noch gemacht werden können.

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
XUDO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
BeitragVerfasst: Sa 27.12.08 15:11 
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconXUDO hat folgendes geschrieben Zum zitierten Posting springen:
Wenn es mehrere Lösungen gibt, handelt es sich um eine nicht zu Ende geführte Erstellung, aber nicht um eine Lösungsaufgabe.
Das ist eine Definition :zwinker:

Aber gut, wenn du es so ausdrücken willst :) Beim Erstellen eines Sudokus(wenn man es denn mal nicht rückwärts macht) interessiert aber schon, wie viele Sudokus daraus noch gemacht werden können.

mfG,


Hallo Hidden,
dann hole dir bitte einmal die drei Beispiele (INHALT-1 bis -3) aus meinem Beitrag vom 24.12. oben.
Alle drei sind logisch nicht lösbar, weil man ohne Radiergummi nicht weiterkommt - auch das Programm nicht.
Erst wenn man jeweils eine (per Radiergummi gefundene Ziffer) ergänzt, werden es lösbare Aufgaben.
Es sind also unfertige Aufgabenstellungen, oder andersrum, es ist jeweils eine Ziffer zu viel aus einem vollständigen korrekten Raster gelöscht.
Das verstehe ich dann unter logisch nicht lösbar - für Leute, die gerne raten und radieren mag es ja trotzdem reizvoll sein.
Gruß XUDO

PS: Die jeweils anzuwendende/zu ladende Aufgabe muß natürlich in INHALT.DAT umbenannt werden, sonst kann sie das Programm nicht lesen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.12.08 15:36 
Bei deinem zweiten Beispiel findet mein Programm anscheinend eine eindeutige Lösung. Ob sie wirklich eindeutig ist, muss ich noch überprüfen, aber es sieht so aus.

Benutzt du auch schwierigere logische Verfahren wie die globale Paarsuche?
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 27.12.08 16:47 
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Was du meinst ist eventuell, dass man mit Axiomen nichtmehr weiterkommt. Hier setzt dann Bruteforce ein.
user profile iconXUDO hat folgendes geschrieben Zum zitierten Posting springen:
Alle drei sind logisch nicht lösbar, weil man ohne Radiergummi nicht weiterkommt - auch das Programm nicht. [..]
Das verstehe ich dann unter logisch nicht lösbar - für Leute, die gerne raten und radieren mag es ja trotzdem reizvoll sein.
Ich sehe wir versteh'n uns :D

Im Prinzip meinen wir beide das Gleiche; reiben tun wir uns nur an eindeutig lösbar :beer: .

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Thorsten83
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Sa 27.12.08 17:37 
Hey,

ich habe mich vor längerer Zeit auch mal an solch eine Lösungsstrategie gesetzt, auch mit dem Ergebnis, dass schwere Sudokus damit nicht lösbar waren...

Z.B. das hier: de.wikipedia.org/w/i...stamp=20070318111345
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.12.08 17:40 
Dieses kann mein Programm rein logisch sofort lösen. ;-)
Thorsten83
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Sa 27.12.08 17:42 
Hab ich auch gerade gesehen :)
Hatte das nur genommen weil so wenige Zahlen vorgegeben sind...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.12.08 17:46 
Es geht ja nicht nur um die Anzahl sondern auch darum welche Zahlen man z.B. wegnimmt um ein Sudoku schwerer zu machen.

Genau das ist das Problem, das ich beim Generieren von Sudokus hatte, und für das ich auch keine gute Lösung gefunden habe. Bei den von meinem Programm generierten schweren Sudokus kann ich nicht dafür garantieren, dass es nur eine Lösung gibt. Diese sind allerdings mit einfacher Logik teilweise nicht zu lösen.

Jedenfalls habe ich versucht mathematisch an das Generieren heranzugehen, aber die Lösungen waren alle nicht so wie ich sie mir vorgestellt hätte. :nixweiss:
Thorsten83
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Sa 27.12.08 21:34 
@Jaenicke: Was verstehst du unter mathematisch? :)