Puzzle 3x3 Hexa Prime Square
Wprowadzenie
Rozważamy 3 x 3 kwadraty cyfr szesnastkowych (od 0
do F
), takie jak:
2 E 3 1 F 3
8 1 5 7 2 7
D D 5 B B 9
Definiujemy kwadrat szesnastkowy 3x3 ( HPS3 ) jako taki kwadrat, dla którego wszystkie liczby szesnastkowe odczytywane od lewej do prawej i od góry do dołu są liczbami nieparzystymi (tzn. Liczbami większymi niż 2).
Jest to prawdą dla lewego kwadratu i fałszem dla prawego kwadratu:
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
Cel
Biorąc pod uwagę listę 9 cyfr szesnastkowych, Twoim celem jest znalezienie układu, który tworzy HPS3.
Przykład:
Input: 123558DDE
Possible output: 2E3815DD5 (a flattened representation of the above left example)
Wejście wyjście
Formaty wejściowe i wyjściowe są elastyczne. Jedynym wymaganiem jest, aby cyfry wyjściowe były uporządkowane od lewej do prawej i od góry do dołu. Poniżej przedstawiono kilka możliwych opcji:
"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.
Użycie tego samego formatu dla danych wejściowych i wyjściowych nie jest wymagane.
Zasady
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach. Standardowe luki są zabronione.
- Twój algorytm musi być deterministyczny
- Nie możesz po prostu bogosortować tablicy, dopóki nie będzie poprawna, nawet w sposób deterministyczny (przy użyciu stałego losowego ziarna).
- Państwo może wymienić wszystkich możliwych rozwiązań dla danego wejścia, ale to nie jest ani konieczne, ani przedmiotem premii.
- Nie musisz obsługiwać danych wejściowych, które nie dopuszczają żadnego rozwiązania. (W takim przypadku Twój kod zapętla się wiecznie lub ulega awarii).
Przypadki testowe
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
code-golf
primes
hexadecimal
Arnauld
źródło
źródło
Odpowiedzi:
05AB1E ,
2321 bajtówWykorzystuje kodowanie CP-1252 .
Zbyt wolny dla TIO.
Wyjaśnienie
źródło
Python 2,
212206197194 bajtówWymaga danych wejściowych ujętych w cudzysłów, takich jak
"123558dde"
Oszczędność 9 i 3 bajtów dzięki Jonathanowi Allanowi
Znaleziono nowy filtr główny od xnor (zmodyfikowałem kwadrat, ponieważ nie chcemy tutaj 2 jako liczby pierwszej), stary filtr główny pochodzi od Boba
źródło
P+=[k][:p%k]
kiedy plasterek ulegnie , a kiedy będzie .p%k
0
[k]
0
[]
from itertools import*
jest miłe sztuczka golf, że będziemy zapisywać kilka bajtów. Zrezygnuj także z wydajności i zrób tok<5e3
.P
jest świetny.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 bajtówPrzekroczono limit czasu online, ale kończy się za 1,5 minuty na moim laptopie. Wprowadza dane w cudzysłowie.
Wyjaśnienie
źródło
Galaretka ,
3430 bajtów(Powinienem być w stanie użyć nfind, aby po prostu pobrać pierwsze dopasowanie,
1#
zamiastÐfḢ
, dla mniejszej liczby bajtów i większej prędkości, ale widzę błędy, gdy próbuję. EDYCJA: napisałem kilka zmian, aby ewentualnie zaimplementować to w Jelly.)Brute force wyszukiwanie wszystkich permutacji, filtrowane według kryteriów, zwracając pierwsze dopasowanie.
Zbyt wolno dla TtyItOnline. Przykłady wyników lokalnych:
W jaki sposób?
źródło
J, 49 bajtów
Wyszukiwanie metodą brute-force, które testuje wszystkie permutacje i generuje wszystkie permutacje, które spełniają warunki układanki.
Wydajność jest wystarczająco dobra, aby obliczyć każdy przypadek testowy w około 3 sekundy.
Stosowanie
Wyjaśnienie
źródło
Mathematica, 115 bajtów
Dane wejściowe muszą być listą znaków (np.
{"1", "2", "3", "5", "5", "8", "D", "D", "E"}
)źródło
Rubinowy, 146 bajtów
Funkcja anonimowa przyjmuje tablicę dziewięciu liczb całkowitych, zwraca jedno rozwiązanie jako tablicę dziewięciu liczb całkowitych. Opiera się na funkcji pomocnika
g
i arequire
.Ta 140-bajtowa wersja drukuje wszystkie możliwe rozwiązania, z liczbami całkowitymi jako ułamkami dziesiętnymi (nie jestem pewien, czy jest to dozwolone).
Niegolfowany w programie testowym
źródło
Groovy, 134 bajtów
Znajduje wszystkie możliwe rozwiązania i zwraca je jako tablicę, zwraca,
[]
jeśli nie ma rozwiązania.Przykładowe dane wejściowe: Dane
123558dde
wyjściowe:
Przykładowe dane wejściowe: Dane
222222222
wyjściowe:[]
Jeśli ktoś chce, żebym to skomentował, wykrzykuj brata.
źródło