16.07.2021, 14:34 (Dieser Beitrag wurde zuletzt bearbeitet: 16.07.2021, 14:35 von maninweb.)
Hallo,
hier dann der aktuelle Zwischenstand in vollständiger Form als Formel hier unten und in der Datei im Anhang. Es fehlen noch die Permutationen als solches, die in fnSudokuPermutation vorgesehen sind, aber noch nichts machen.
17.07.2021, 14:43 (Dieser Beitrag wurde zuletzt bearbeitet: 17.07.2021, 14:43 von maninweb.)
Servus,
die Formel ist jetzt vollständig. Als Abbruchbedingung für die Permutation ist dann so gesetzt, dass kein Pärchen mehr als 2 mal auftreten darf. Es kann durchaus (selten) vorkommen, dass #KALK! als Ergebnis zurückgegeben wird. Dann einfach F9 drücken. Wenn die Abbruchbedingung auf 1 gesetzt wird, steigt die Formel aus. Wobei ich nicht weiss, ob das überhaupt geht; also keine Pärchen.
17.07.2021, 15:26 (Dieser Beitrag wurde zuletzt bearbeitet: 17.07.2021, 15:40 von LCohen.)
Hallo maninweb,
soweit war ich ja auch schon. Es ist kein Sudoku.
Du bleibst jetzt dort stehen, wo in jedem 3er-Spaltenfeld immer die Inhalte konstant bleiben und nur in der Reihenfolge wechseln. Wenn also in einem der 27 3er-Spaltenfelder die Zahlen 1,8,9 auftauchen, dann tun sie das in anderer Reihenfolge in allen 8 weiteren auch (in denen eine 1 oder eine 8 oder eine 9 steht). Mit diesem Wissen ist die Lösung des Schein-Sudoku dann "über-einfach", und es kann definitiv auf sehr viele jetzt schon belegte Felder in der Rätselmatrix zusätzlich verzichtet werden.
17.07.2021, 15:51 (Dieser Beitrag wurde zuletzt bearbeitet: 17.07.2021, 15:52 von maninweb.)
Hallo,
ok, dann bringt das Permutieren letztlich nicht viel. Ich denke mal, dann bleibt nur das Verwenden eines bereits gelösten Sudokus als Basis und nicht die in der Formel definierte Ausgangsreihenfolge der Zahlen. Das pflanzt sich so oder so fort. Ein gelöstes Sudoku könnte ja insoweit durch Vertauschen von Zahlen, Zufallsleerstellen usw. modifiziert werden.
Ein Algo wie z.B. ein Backtracing-Algo ist mit LAMBDAs meines Erachtens nicht machbar, auch schon wegen der Begrenzung an möglichen Iterationen. Das hatte ich schon probiert.
Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards https://de.excel-translator.de/translator:: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
17.07.2021, 16:07 (Dieser Beitrag wurde zuletzt bearbeitet: 17.07.2021, 16:11 von LCohen.)
Vielleicht hast Du diesen Sudoku-Algo ja schon mal in VBA erfolgreich probiert?
Dann würde sich die Gemeinde sicherlich über den Code freuen.
Oder man googelt nach einem Sudoku-VBA-Code. Manchmal kommen dabei Ideen, und dann kann man es über besondere Klimmzüge doch noch mit LAMBDA schaffen.
Den Laien (wie ich es einer bin) dürfte vermutlich folgendes interessieren:
1) Vermutlich muss zuerst die Lösung gebaut werden, oder? 2) Dann werden für die Rätselstellung aus der Lösung soviele Informationen entfernt, dass sie gerade noch eindeutig erstellbar ist. Oder noch mehr: Dann ist sie mehrdeutig.
Ist das richtig? Und nach welchem Algorithmus entfernt man verzichtbare Information?
17.07.2021, 16:35 (Dieser Beitrag wurde zuletzt bearbeitet: 17.07.2021, 16:36 von maninweb.)
Hallo,
ich hatte ja relativ weit zu Beginn des Threads einige englische Links gepostet. Es gibt verschiedene Algorithmen, um Sudokus zu bauen, die aber letztlich alle rekursiv sind. Die Rekursionen basieren wohl auch darauf, sich Zustände zu merken, das geht mit LAMBDAs eben halt wohl nicht. Manche Algos brauchen schon was länger, um Sudokus zu finden. Manche nehmen auch dann den Ansatz aus einem bestehenden Sudokus ein neues zu bauen. Ich fand den Ansatz mit einer Zahlenreihe attraktiv, aber wie wir ja sehen, optimal ist das nicht. Man könnte noch vielleicht diesen Algo hier versuchen. Wenn man in Excel eine Funktion hätte, die dynamisch neue Matrizen zur Laufzeit generieren könnte, wäre es einfacher.
Zu 1 & 2 von Dir: ja.
In VBA habe ich selber keins gemacht; sind aber welche im Netz zu finden, wobei eher welche, die ein Sudoku lösen.
Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards https://de.excel-translator.de/translator:: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner