In einigen britischen Zeitungen gibt es ein Spiel namens Hidato . Es ist etwas ähnlich wie Sudoku , aber anstatt 1-9 in einer Linie und einem Block zu haben, geht es darum, die Zahlen so zu platzieren, dass sie von 01
ganz oben nach ganz oben verbunden sind, sodass sie sich alle horizontal, diagonal oder vertikal berühren .
Eingaben enthalten mehrere durch getrennte Zeilen \n
mit durch ein Leerzeichen getrennten Blöcken, von denen Sie annehmen können, dass sie zwei Zeichen breit sind. Jeder Block ist eine Zahl, ein Leerzeichen, das ausgefüllt werden muss (gekennzeichnet durch --
), oder eine Wand, an der keine Zahlen stehen dürfen ( XX
).
Ihre Ausgabe sollte mit der angegebenen übereinstimmen, obwohl leere Blöcke mit Zahlen versehen sind. Beachten Sie, dass es möglicherweise keine eindeutige Lösung gibt oder sogar die Existenz einer Lösung - einige ergeben aufgrund ihrer Mehrdeutigkeit ein Vielfaches, ähnlich wie Sudoku, und einige sind möglicherweise buchstäblich unlösbar. In diesem Fall sollten Sie jedoch eine falsche Ausgabe angeben kann davon ausgehen, dass die Eingaben wie folgt formatiert sind.
Verwenden Sie einen Standardheader Language: XX bytes
. Viel Spaß beim Golfen!
Beispiele
Eingänge 01 XX 03
, 01 -- 04
, 01 --
usw. sollten alle Rückkehr etwas Falsey .
Eingang:
01 -- --
-- XX 05
Ausgabe:
01 03 04
02 XX 05
Eingang:
-- 33 35 -- -- XX XX XX
-- -- 24 22 -- XX XX XX
-- -- -- 21 -- -- XX XX
-- 26 -- 13 40 11 XX XX
27 -- -- -- 09 -- 01 XX
XX XX -- -- 18 -- -- XX
XX XX XX XX -- 07 -- --
XX XX XX XX XX XX 05 --
Ausgabe:
32 33 35 36 37 XX XX XX
31 34 24 22 38 XX XX XX
30 25 23 21 12 39 XX XX
29 26 20 13 40 11 XX XX
27 28 14 19 09 10 01 XX
XX XX 15 16 18 08 02 XX
XX XX XX XX 17 07 06 03
XX XX XX XX XX XX 05 04
Eingang:
XX XX XX XX -- 53 XX XX XX XX
XX XX XX XX -- -- XX XX XX XX
XX XX 56 -- -- -- 30 -- XX XX
XX XX -- -- -- -- -- -- XX XX
XX -- -- 20 22 -- -- -- -- XX
XX 13 -- 23 47 -- 41 -- 34 XX
-- -- 11 18 -- -- -- 42 35 37
-- -- -- -- 05 03 01 -- -- --
XX XX XX XX -- -- XX XX XX XX
XX XX XX XX 07 -- XX XX XX XX
Ausgabe:
XX XX XX XX 52 53 XX XX XX XX
XX XX XX XX 54 51 XX XX XX XX
XX XX 56 55 28 50 30 31 XX XX
XX XX 26 27 21 29 49 32 XX XX
XX 25 24 20 22 48 45 44 33 XX
XX 13 19 23 47 46 41 43 34 XX
14 12 11 18 04 02 40 42 35 37
15 16 17 10 05 03 01 39 38 36
XX XX XX XX 09 06 XX XX XX XX
XX XX XX XX 07 08 XX XX XX XX
quelle
-1
um eine Wand und0
eine Leerstelle handelt. Das würde es einfacher machen, sich auf die eigentliche Herausforderung des Puzzles zu konzentrieren, und dann gibt es keine Komplexität beim Auffüllen von Zahlen mit Nullen oder beim Parsen von Zeichenfolgen.Antworten:
JavaScript (Node.js) , 482 Byte
Dies ist eine Brute-Force-Lösung. Sie beginnt bei
01
und überprüft jede benachbarte Zelle auf leere Zellen (--
) oder die gewünschte Anzahl und folgt dem Weg zur Vervollständigung oder Unmöglichkeit. Wenn die gewünschte Nummer existiert und kein Nachbar ist, wird diese Lösung gekürzt. Dauert einige Sekunden für das größte Raster.Das ist wahrscheinlich nicht besonders interessant, aber ich dachte, ich würde versuchen, eine Lösung zu finden, bevor ich mir die Antworten auf Rosetta Code anschaue, und es hat mir Spaß gemacht, eine etwas schwierigere Herausforderung anzupacken!
Findet alle Lösungen, wenn viele existieren . Der Body ist eine Funktion, die ein zweidimensionales Array akzeptiert, und die Fußzeile verarbeitet die Eingabe in das gewünschte Format und gibt das Ergebnis auch in das gewünschte Format zurück. Gerne geben wir Ihnen weitere Informationen (und bei Interesse auch eine weniger erfolgreiche Implementierung).
Probieren Sie es online!
quelle