****************************************************************** Sudoku 7.4, löst garantiert alle Rätsel, erkennt Mehrdeutigkeit! Die Sechseck- (Swordfish-) Meth. mit ihren komplizierten Bedingungen für die Zulässigkeit der Anwendung wurde von mir endlich logisch ganz durchschaut und dem entsprechend weitgehend neu geschrieben! s.u.! Ebenso habe ich die selbst entwickelte Rechteck-Methode (Pruefen100) noch etwas umgearbeitet, um Fehler (wurden zwar korrig.) zu vermeiden. Die Lösung folgt mit log. Schlüssen der eigenen Vorgangsweise / Auflisten der verwandten Strategien / Angabe der Schwierigkeiten / Speichern der Rätsel, Lösungen mit laufd. Nr. je nach dem Grade (Leicht,Mittel,Schwer,Extrem,Teufel,ZweiProb,Probe,Unlösbar ) Angabe der nächsten Strategie und Zahl / Angabe der Zahl für eine gewünschte Stelle / In Proben Eindeutigkeit prüfen, alle Lsg. nennen/ Auflistung sämtlicher Möglichkeiten in den Feldern / Schnelles Vor- gehen durch Aufsetzen / Druck von Zetteln, um Rätsel für die Lösung einzutragen / Praktisch alle - auch teuflisch schwere - eindeutige Rätsel werden logisch gelöst, einige wenige halt mit Probieren! Neuerdings existiert die Datei "Sudoku-Feld.hta" in die man das Sudoku eintragen kann und aus der heraus alles möglich ist, wie Zwischenlösungen zu speichern und bei Fehlern wieder zurückzurufen. Wie früher sind auch die Lösung für ein Feld, der nächste Schritt, die Möglichkeiten in den noch offenen Feldern abrufbar. Außerdem können vorhandene Rätsel durch Umbenennung der Zahlen und verschiedenste Vertauschungen bis zu völliger Unkenntlichkeit umge- ändert werden - ohne dass sich die Schwierigkeit ändert! Das ist damit eine Möglichkeit neue Sudoku-Rätsel zu erzeugen! Copyright: W. Schmelz, 08.08.2010 ****************************************************************** Achtung: Dies Programm ist ein Visual-Basic-Script wie auch so viele Viren, so kann es passieren, dass der Virenscanner anspringt, ggf. Scanner ab- schalten, später Einschalten nicht vergessen! Außerdem: Bei längerem Prüfen läuft der PC unter Volllast und darf nicht weiter belastet werden! Evtl. bricht sonst das Programm ab! Das Programm installiert sich mit "Setup.vbs" nach "C:\Spiele\Sudoku" und die Deinstallations-Datei "SudoDel.vbs" nach "C:\Spiele". Rätsel älterer Versionen bleiben dabei erhalten. Rätsel werden mit und ohne Trennstriche gelesen. Es wird auch ein Verknüpfungs-Icon auf den Desktop gesetzt. Deinstallation erfolgt restlos- die Rätsel bleiben!! Gelöst wird das Sudoku - Rätsel, das in "Sudoku.txt" vorgelegt wird, oder auf "Loesen +" aufgesetzt und so nach "Sudoku.txt" kopiert wird. Ausgegeben wird die Datei "LsngXXXX.txt", versehen mit der Liste der benutzten Strategien, des Grades und der Angabe, ob probiert wurde. Dabei werden die Rätsel nummeriert und in dem Rätsel-Ordner, welcher der Schwierigkeit des Rätsels entspricht, mit der nummerierten Lösung gespeichert. Die Nr. gehen bis 9999 ! Auf "Moeglkt +" kann man ein Rätsel aufsetzen und sich "druckfertig" alle in den Feldern mögliche Zahlen ausgeben lassen! Oder nur allein das Rätsel wird zum Drucken vorbereitet. Die gegebenen Zahlen muss man aber leider von Hand noch einmal größer schreiben! Will man sich dabei die Spannung nicht nehmen lassen, ist es möglich die Lösung für ein bestimmtes Feld zu verlangen. Dann wird keine Lö- sung angegeben oder gespeichert, sondern die einzelne Zahl als Hilfe geliefert, zusammen mit dem Schwierigkeitsgrad. Es ist ferner möglich, ein nicht " weiter " lösbares Rätsel einzuge- ben, und die nächste Stelle mit der verwendeten Strategie anzufordern, um selbst wieder voran zu kommen! Man kann sich mit der Strategie be- gnügen- oder auch die Zahl verlangen! Man kann so Schritt für Schritt das Rätsel lösen unter Angabe der jeweiligen Strategie! Zuletzt hinzu kam Pruefen35/45/55/65/75/85 als neue Strategien, s.Liste, außerdem noch drei neue, geradezu teuflisch schwere Strategien, darun- ter die Schwertfisch-Methode(Prf105). Jetzt sind es bei vielen, neuen Strategien genau 22 oder bei Zusam- menrechnen der vier ähnlichen in Pruefen40 bleiben 19 Strategien, da- zu noch vier Probe-Strategien, also 23! Dieses Programm löst auch die hartnäckigsten Rätsel unter meinen ca. 950 Rätseln. Die Zweier bis Vierer-Probe wurde 7 - mal benutzt. Diese Rätsel waren mehrdeutige Rätsel! Die Probe wurde 1x benutzt, bei m.E. von Hand nicht lösbarem Rätsel, sondern nur vom PC mit systematischem Probieren. Das dauerte bei mei- nem 6 Jahre alten Laptop bis zu - 15 - Minuten !!!. Es wurden dabei immerhin 3 (!) Zahlen eingefügt! In diesem Abschnitt "Probier", dem letzten Teil dieses Programmes, werden im meistbelegten Quadrat testweise 1 fehl. Zahl eingefügt, außerdem in einer Zeile versuchsweise 1 weitere fehlende Zahl und das Programm bis zur Fehlerbildung laufen gelassen, ... erneut wei- ter getestet, bis schließlich eine Lösung gefunden ist - oder keine ! Dabei wird die Zweier-Feld-Probe verwandt,d.h. eine 3. Zahl probiert! Danach wird noch ein zweites Mal in einer weiteren Zeile probiert. Nachteil ist hier aber, dass evtl. unlösbare Rätsel doch gelöst und die Auflistung der verwendeten Strategien ebenso verfälscht wird ! Auch können die Rätsel trotz allem mehrere Lösungen haben ! Hiermit können Rätsel aber jedenfalls konstruiert werden !!! Aus der Art und Zahl der benutzten Strategien kann ziemlich deutlich die Schwierigkeit des Rätsels abgeschätzt werden ! Obwohl man sich über die Schwierigkeit der Strategien streiten kann!? (s. Bemerkung am Schluss der leichten Strategien u. in Pruefen10!) Dabei wird es zunächst mit leichten Strategien probiert, bis es nicht weiter geht, und die Schwierigkeit ständig weiter gesteigert. ************************* Übersicht der Strategien: ************************* Die Strategien entsprechen der von uns verwandten Vorgangsweise, die Schwierigkeit wird also hoffentlich in etwa erkannt! Leichte Strategien: =================== Pruefen10 (bei Prf20/Prf10>=3 schon "Mittel", da Prf20 recht hoch !) Im Anfang des Programm in " Zeilspalt " und in " Grundprf " enthal- ten, ergänzt Zeilen, Spalten oder Quadrate mit der 9. Zahl ! Pruefen20 Bei jedem freien Feld die Zahlen der Zeile, Spalte und des Teilqua- drates gegeneinander prüfen d.h. Ermittelung der im Feld(a,b) mög- lichen Zahlen (Kreuz(a,b)). Ist Kreuz(a,b) nur eine Zahl, sie setzen! Wenn anfangs mind. 4 x nur Prüf20 greift, so wird Grad mittel genannt! Mittlere Strategien: ==================== Pruefen30 In allen Teilquadraten Leerfelder prüfen, ob in ihnen fehlende Zahlen durch Blockgn. der je 3 hindurch laufenden Zeilen bzw. Spalten nur noch an dieser Leerstelle sein können. Pruefen35 In Teilquadraten prüfen, ob eine Zahl nur genau 2 oder 3 x möglich ist. Sind die Stellen in einer Zeile (Spalte), so streicht man diese Zahl in der Zeile in Feldern außerhalb des Teilquadrat. Ist in einem Feld nur noch eine Zahl übrig, setzt man sie! Pruefen40 Teil1: Quadrate pruefen, ob 3 Felder frei. Wenn 2 davon in sonst belegter Zeile oder Spalte sind, so liegen in diesen 2 Feldern die Zahlen bis auf den genauen Platz fest, aber ins dritte Feld kommt die 9. Zahl. Teil2: Quadrate pruefen, ob 4 Felder frei. Wenn 3 davon in sonst belegter Reihe sind, erhält das 4. freie Feld die im Quadrat fehlende Zahl! Teil3: Quadrate pruefen, ob 2 Felder unbelegt, die zudem in einer Reihe liegen. Ist die Reihe 6x belegt, so ist das 3. freie Feld festgelegt als 9. Zahl in der Reihe! Teil4: Quadrate pruefen, ob 3 Felder in einer Reihe unbelegt. In 5x belegter Reihe ist das 4. freie Feld dann festgelegt Schwere Strategien: =================== Pruefen45 ( Ab hier müsste man alle Möglkt. überprüfen und notieren !) Kreuz(a,b) pruefen(Zahl der Möglkt. in dem Feld), ob 2 x in einer Rei- he 2 gleiche Möglkt. übrig sind. Die zugehörige Zeile (Spalte) und evtl. das Teilquadrat pruefen, ob nach Streichen der 2 Zahlen als Möglkt. an den anderen Stellen das Kreuz(a,b) nur noch eine Zahl ist! Pruefen50 Teilquadrate insgesamt nebeneinander und untereinander betrachten. Prüfen, ob eine Zahl in jeder Teilquadrat-Zeile, -Spalte genau 1x da ist ! Dann nicht mit der Zahl belegtes Teilquadrat testen, ob z. B. durch belegtes Quadrat drüber oder drunter und vorhand. Zahlen eine Zeile blockiert ist - zusätzlich zu der vom belegten Quadrat daneben. Nun 3. Quadrat der Reihe prüfen, ob in der Zeile, die im and. freien Quadrat block. war, nur eine Möglichkeit frei ist. Dort die Zahl einfügen ! Ent- sprechend bei lotrecht liegenden Quadraten prüfen. Pruefen55 Eigentlich " X - Wings " ! s.a. Pruefen 110 u. Pruefen075 / 5, also teufl. In 2 Spalten (Zeilen), die versch. Teilquadrate durchlaufen, bleibt an 2 gleichen Stellen jeder Spalte dieselbe Zahl in Kreuz(a,b) über. Dann fällt die Zahl im dritten Quadrat in den Reihen in Höhe der 2 Felder aus und Kreuz(a,b) ist evtl. dort eindeutig. Pruefen60 In einem Teilquadrat sind mind. 2 Felder frei. In einer hindurchlaufen- den Zeile oder Spalte sind außerhalb des Quadrates 2 Felder frei, dabei fehlt eine Zahl, die im Quadrat schon ist. Wenn ein Feld durch Blockrg. der Zahl ausfällt, weil die durchlauf. Zeile/Spalte die Zahl enthält, dann muss die Zahl auf das andere freie Feld. Extreme Strategien: =================== Pruefen65 (in Pruefen70, in 765 ff.) In einem Teilquadrat ist eine Zahl nur an 2 Stellen möglich. Wenn die Stellen in einer Zeile (Spalte) sind, die Zahl an Leerstellen in der Zeile außerhalb des Teilquadrat blocken. In den quer dazu lieg. Spalten (Zei- len) sehen, ob in der Spalte (Zeile) nur noch eine Möglkt. bleibt. Pruefen70 Teilquadrate prüfen, ob für eine Zahl 2 Felder einer Zeile (Spalte) belegt oder block. sind, danach werden in Sub Prüfen78 und 79 die Nachbarqua- drate in Richtung der Zeile (Spalte) auf Blockrng. aller Art getestet und ggf. 3. Quadratzahl in der Zeile (Spalte) eingefügt. Strategie 12 (Prf75 mit Prf55/85 / "Blocken") / Gesamm. Blockierungen! --> Wird in 2 oder 4 Schleifen benutzt, nur Kreuz(a,b) werden aktualisiert 1. Genau (!) 2 Zahlen auf 2 Feldern möglich, dann sind and. Felder des Teilquadrat, der Zeile bzw. Spalte für sie blockiert! 2. 2 Zahlen nur an 2 Stellen einer Zeile, Spalte, eines Teilquadrat mög- lich, dann ist der Rest der Zeile, Spalte, des Teilquadrat blockiert. 3. 3 Zahlen müssen auf 3 Feldern einer Zeile, Spalte, Teilquadrat sein, so sind Felder des Teilquadrat, ggf. der Zeile bzw. Spalte block.! 4. Zahl im Teilquadrat nur an 2 (3) Stellen einer Zeile, Spalte möglich, dann ist der Rest der Zeile, Spalte, des Teilquadrates blockiert 5. Zahl in den Ecken eines Rechteck möglich, wobei die Stellen in den Zeilen(Spalten) die einzigen Möglkt. sind, so kann man in den Spalten (Zeilen) die Zahl außerhalb der Ecken blockieren!(Pruefen55 !) X-Wings wird benutzt zum Festlegen der Kreuz(x,y) 6. Pruefen85 ! 7. Zahl in einer Zeile, Spalte, Teilquadrat nur 1x möglich? Setzen! Zeilen, Spalten, Quadrate prüfen, ob nur noch eineZahl möglich! Pruefen80 (in Pruefen70) In einem Teilquadrat sind mindest. 2 Felder leer und liegen in einer Zeile (Spalte). Durch diese Zeile (Spalte) werden eine gesamte Zeile (Spalte) und interess. Nachbarquadr. festgelegt. Im Teilquadrat ist eine Zahl, die in der verläng. Zeile (Spalte) fehlt. Nun kann neben, unter, über der Zahl in den interess. Teilquadr. die Zahl nicht sein. Der Platz liegt evtl. dort durch sonst. Ausschlüsse mit Blockrg. fest, wenn nur ein Feld möglich. Pruefen85 (mit in Pruefen75) Quadratzeilen und -spalten prüfen, ob eine Zahl garnicht vorhanden ist. Ist diese Zahl nur in 2 gleichen Zeilen (Spalten) von 2 Quadr. möglich, so kann man sie im 3. Quadr. in den Zeilen (Spalten) block. und prüfen, ob eine Zahl allein blieb. Pruefen90 (in Pruefen70) Wenn 2 (3) Zahlen auf 2 (3) Felder sein müssen, so sind and. Felder des Teilquadrat für sie blockiert! In jedem Teilquadrat nun prüfen, ob in 2 (3) Feldern nur noch 2 (3) Zahlen möglich sind und die and. Felder des Teil- quadrat, ggf. der Zeilen/Spalten für die Zahlen blockieren, wenn die Zah- len in einer Reihe liegen. Nun Teilquadrat, Zeilen / Spalten für die and. Zahlen prüfen, ob freie Felder bis auf eines block., ggf. Zahl dort setzen! Teuflische Strategien: ====================== Pruefen95 Viereck1-Methode 4 Doppelfelder in 2 Reihen, je 2 in einem Teilquadrat, mit gleichen Zah- len in einem Teilquadrat, sonst einer gleichen Zahl in Nachbarfeldern. Sind 2 Zahlen auf 2 Feldern eines Teilquadrat allein nur möglich, prüfen ob drüber in beiden Spalten (daneben in 2 Zeilen) zwei Doppelfelder in einem Quadrat, die jeweils eine der beiden Zahlen enthalten und eine ge- meinsame Zahl. Dann muss in ursprünglichen Feldern die Zahl stehen, die nicht(!) oben wieder auftaucht, sonst ergäbe sich der Widerspruch, dass die zusätzliche Zahl oben in beiden Feldern steht. ( Teuflisch!? ) Zahlen oben nicht auch gleich !!! z.B. in 2 Spalten: (3/8) (2/8) und in Teilquadrat (2/3) und (2/3) in Teilquadrat => unten 3 und 2 setzen! Pruefen100 Viereck2-Methode, zu Rechteck (X-Wing) spezielle - Variante: (Pruefen110 als allg. Variante2) 4 Felder mit jeweils nur noch 2 Möglkt., im Rechteck (Quadrat) liegend, mit immer einer gleichen Zahl in Nachbarfeldern und einer "Einzelzahl": Sind jeweils 2 Zahlen auf 2 Feldern einer Zeile(Spalte) allein nur möglich, davon eine in den 2 Feldern gleich, prüfen, ob in einer parallelen Zeile (Spalte) an derselben Stelle auch zwei Doppelfelder ( eines kann 3 x sein) mit jeweils einer gleichen Zahl wie in der Zeile von eben und wieder einer gleichen Zahl in den beiden neuen Doppelfeldern. Es muss aber in einer Spalte oben die unten gleiche Zahl auftauchen, in der anderen eine an- dere. Möglkt oben und unten dürfen nicht gleich sein. Auch dürfen par- allel der Seiten des Rechteck auf Rechteckseite nicht gleiche Möglkt. sein. Ist in einem Zweierfeld eine sonst einmalige Zahl, so ist diese zu setzen! Eine Ecke der Gegenseite kann 3 Zahlen enthalten ! s.u. Die gesamte Anzahl der in den 4 Ecken mögl. Zahlen darf nicht >4 sein ! Bei insgesamt 5 möglichen Zahlen gab es einen Fehler bei einem Bsp. ! Beispiel: (3/9) und (6/9) (2/3) und (3/6) => es ist links unten 2 zu setzen, denn 3 ergibt einen Widerspruch! Die Begründung für ein mögliches Dreierfeld gelingt mir beim besten Willen (noch!) nicht, es klappt halt bei 17 Beispielen!? Pruefen105 (Swordfish-Methode / 6 - Eck - Methode) Strategie 18 (Prf105)(Swordfish-Methode / 6 - Eck - Methode) In 3 Zeilen und 3 Spalten steht mindestens 2 x die gleiche mögliche Zahl und die Felder bilden ein 6-Eck, bei dem immer 2 Zahlen in den Zeilen und in den Spalten einander zugeordnet sind: 5 ----- 5 5 -- 5 | | | | | 5 -- 5 oder überkreuzt 5 -- + ----- 5 | ( 5 ) | ( 5 ) | | 5 ---------- 5 5 ----- 5 Wenn in einer oder mehr Zeilen öfter als 2x die Zahl steht, darf sie in höchstens 1 Spalte häufiger als 2x sein. Entsprechendes gilt umgekehrt für die Spalten ! Das und Folgendes muss sein, damit die mögliche Zahl abwechselnd in den Ecken des 6-Eckes liegen muss und sie deswegen außerhalb in den Zeilen und Spalten gestrichen werden kann! s.a. 110 Belegte Felder außerhalb der 6-Eck-Ecken dürfen nicht auf sich kreuzenden Seiten liegen, wie hier zu sehen: 5 - - - X - - 5 | : | 5 - - - 5 | | | 5- - -5 An einer Ecke aufeinander stoßende Seiten dürfen nicht beide über 2x belegt sein! X < == dort zu oft belegt oder unten | - - - 5 - - X <== | Dann muss(!) die Zahl abwechselnd auf den Ecken sein und kann außerhalb dieser Stellen in den Zeilen und Spalten gestrichen und geprüft werden, ob eine Zahl an einer belegten Stelle alleine blieb! Dort setzen! Pruefen110: Rechteck-Methode allgemein ( Variante2 ) (X-Wing): (eigentlich das Gleiche wie Pruefen55, wie ich inzwischen merkte) Rechteck suchen in dessen Ecken eine best. Zahl als gleiche Möglichkeit besteht. Wenn beide Zeilen ((oder Spalten)) genau 2x besetzt sind, kann man in den Ecken jeweils abwechselnd be- ginnen zu setzen und das Rechteck wird abwechselnd mit der Zahl belegt. Damit ist hier die 6 im Wechsel in den Ecken, so dass man in den Reihen außerhalb der Ecken die 6 streichen kann! 56 236 67 hier sind beide Spalten nur doppelt besetzt - x <== Rechteck mit abwechselnden 46 569 69 x - <== Möglkt. für die 6 ^ | 6 streichen! => 4 ist dort Lsng. ! Wenn nicht gelöst, dann wird versucht, ob nur eine doppelt besetzte Seite zur Lösung führt! Wenn nicht, alten Zustand wieder herstellen! Wenn immer noch nicht gelöst, folgen die : Proben: ======= DreierProbe Vor der nächsten "ZweiProb" werden Zeilen und Spalten geprüft, ob noch 3 Zahlen fehlen und diese systemat. probiert (6 Fälle). Das klappt bei 2/3 der verbliebenen Rättsel u. ist deutlich schneller als anderes Pro- bieren. Die Lsg. sind aber in "ZweiProb" gespeichert. Außerdem wird die Mehrdeutigkeit getestet indem alle (!) Eisetzungen geprüft werden. ViererProbe Vor der nächsten "ZweiProb" werden Zeilen und Spalten geprüft, ob noch 4 Zahlen fehlen und diese systemat. probiert (24 Fälle). Außerdem wird die Mehrdeutigkeit getestet indem alle (!) Einsetzungen geprüft werden. ZweiProb (Doppelfeld-Probe) am Schluss Kreuz(a,b) pruefen, ob in Leerfeld nur 2 Möglkt., diese 2 Zahlen testen- bei Widerspruch weitere Doppelfelder testen. Abbruch, wenn in keinem Dop- pelfeld Erfolg! Angezeigt wird, welche Zahl Erfolg hatte und ob evtl. beide Zahlen hier möglich sind. Ab jetzt werden auch die Dreier-Felder geprüft, das ist zeitraubend, aber mehrdeutige Rätsel werden garantiert erkannt! Dabei laufen alle Weiterschaltungen mit Countdown ab und eingeblendeter Restzeit - es kann abgeschaltet werden - sonst läuft das Programm weiter! Systemat. Probe, auf Wunsch Es wird im meistbelegten Quadrat testweise 1 fehl. Zahl eingefügt, außer- dem in einer Zeile versuchsweise 1 weitere fehl. Zahl und das Programm bis zur Fehlerbildung laufen gelassen, ... erneut weiter getestet, bis eine Lösung gefunden ist - oder keine ! Dabei wird die Zweier-Feld-Probe verwandt, d.h. eine 3. Zahl probiert! Danach kann ein zweites Mal in einer weiteren Zeile probiert werden.