Das 3x3 Hexa Prime Square Puzzle
Einführung
Wir betrachten 3x3 Quadrate hexadezimaler Ziffern (von 0
bis F
) wie:
2 E 3 1 F 3
8 1 5 7 2 7
D D 5 B B 9
Wir definieren ein 3x3 Hexa Prime Square ( HPS3 ) als ein solches Quadrat, für das alle von links nach rechts und von oben nach unten gelesenen Hexadezimalzahlen ungerade Primzahlen sind (dh Primzahlen größer als 2).
Dies gilt für das linke Quadrat und falsch für das rechte Quadrat:
2 E 3 --> 0x2E3 = 739 1 F 3 --> 0x1F3 = 499
8 1 5 --> 0x815 = 2069 7 2 7 --> 0x727 = 1831
D D 5 --> 0xDD5 = 3541 B B 9 --> 0xBB9 = 3001
| | | | | |
| | +---> 0x355 = 853 | | +---> 0x379 = 889 = 7 x 127
| +-----> 0xE1D = 3613 | +-----> 0xF2B = 3883 = 11 x 353
+-------> 0x28D = 653 +-------> 0x17B = 379
Tor
Bei einer Liste von 9 hexadezimalen Ziffern besteht Ihr Ziel darin, eine Anordnung zu finden, die eine HPS3 bildet.
Beispiel:
Input: 123558DDE
Possible output: 2E3815DD5 (a flattened representation of the above left example)
Input-Output
Eingabe- und Ausgabeformate sind flexibel. Die einzige Voraussetzung ist, dass die Ausgabestellen von links nach rechts und von oben nach unten sortiert sind. Im Folgenden sind einige mögliche Optionen aufgeführt:
"2E3815DD5"
[ 0x2, 0xE, 0x3, 0x8, 0x1, 0x5, 0xD, 0xD, 0x5 ]
[ "2", "E", "3", "8", "1", "5", "D", "D", "5" ]
[
[ 0x2, 0xE, 0x3 ],
[ 0x8, 0x1, 0x5 ],
[ 0xD, 0xD, 0x5 ]
]
[ "2E3", "815", "DD5" ]
etc.
Die Verwendung des gleichen Formats für Eingabe und Ausgabe ist nicht erforderlich.
Regeln
- Das ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes. Standardlücken sind verboten.
- Ihr Algorithmus muss deterministisch sein
- Sie können das Array nicht einfach falsch sortieren, bis es gültig ist, auch nicht auf deterministische Weise (unter Verwendung eines konstanten Zufalls-Seeds).
- Sie können alle möglichen Lösungen für eine bestimmte Eingabe auflisten, dies ist jedoch weder erforderlich noch von einem Bonus abhängig.
- Sie müssen keine Eingaben unterstützen, die keine Lösung zulassen. (Es ist vollkommen in Ordnung, wenn sich Ihr Code für immer in einer Schleife befindet oder in diesem Fall abstürzt.)
Testfälle
Input Possible output
---------------------------
123558dde 2e3815dd5
1155578ab a7b851551
03bddffff ffd0dfb3f
35899beff 8f99e3bf5
15899bbdf 581bb9fd9
14667799f 6f1469779
13378bcdd 78d1cd33b
24577bbdd 7274bd5db
1118bbddd 11b18dbdd
223556cdd 623c25dd5
12557899a 8a5295971
113579bbd 5b3db7191
quelle
Antworten:
05AB1E ,
2321 BytesVerwendet die CP-1252- Codierung.
Für TIO zu langsam.
Erläuterung
quelle
Python 2,
212206197194 BytesErfordert Eingaben in Anführungszeichen wie
"123558dde"
Sparen von 9 und 3 Bytes dank Jonathan Allan
Es wurde ein neuer Hauptfilter von xnor gefunden (das Quadrat wurde geändert, da wir hier keine 2 als Hauptfilter haben möchten). Der alte Hauptfilter stammt von Bob
quelle
P+=[k][:p%k]
- wennp%k
nicht0
die Scheibe nachgeben[k]
, wenn er0
es wird ergeben[]
.from itertools import*
ein ordentlicher Golf-Trick, der ein paar Bytes spart. Auch auf die Effizienz verzichten und tunk<5e3
.P
ist super.print[s for s in map(''.join,permutations(input()))if all(int(s[3*i:][:3],16)in P and int(s[i::3],16)in P for i in(0,1,2))]
Pyth,
2321 BytesLäuft online aus, endet aber in 1,5 Minuten auf meinem Laptop. Übernimmt die Eingabe in Anführungszeichen.
Erläuterung
quelle
Gelee ,
3430 Bytes(Ich sollte in der Lage sein, ein nfind zu verwenden, um nur die erste Übereinstimmung
1#
anstelle vonÐfḢ
für weniger Bytes und mehr Geschwindigkeit abzurufen , aber ich sehe Fehler, wenn ich es versuche. BEARBEITEN: schrieb einige Änderungen, um dies möglicherweise in Jelly zu implementieren.)Brute-Force-Suche aller Permutationen, gefiltert nach den Kriterien, wobei die erste Übereinstimmung zurückgegeben wird.
Viel zu langsam für TtyItOnline. Beispiele für lokale Ausgaben:
Wie?
quelle
J, 49 Bytes
Brute-Force-Suche, die alle Permutationen testet und alle Permutationen ausgibt, die die Bedingungen für das Rätsel erfüllen.
Die Leistung ist gut genug, um jeden Testfall in etwa 3 Sekunden zu berechnen.
Verwendung
Erläuterung
quelle
Mathematica, 115 Bytes
Die Eingabe muss eine Liste von Zeichen sein (zB
{"1", "2", "3", "5", "5", "8", "D", "D", "E"}
)quelle
Rubin, 146 Bytes
Die anonyme Funktion verwendet ein Array von neun Ganzzahlen und gibt eine Lösung als Array von neun Ganzzahlen zurück. Verlässt sich auf Helferfunktion
g
und arequire
.Diese 140-Byte- Version gibt alle möglichen Lösungen mit den ganzen Zahlen als Dezimalzahlen aus (nicht sicher, ob dies zulässig ist).
Ungolfed im Testprogramm
quelle
Groovy, 134 Bytes
Findet alle möglichen Lösungen und gibt sie als Array zurück. Gibt zurück,
[]
wenn es keine Lösung gibt.Beispiel Eingabe:
123558dde
Ausgabe:
Beispiel Eingabe:
222222222
Ausgabe:[]
Wenn jemand möchte, dass ich es auskommentiere, brülle einen Bruder an.
quelle