Cel: Biorąc pod uwagę macierz dodatnich liczb całkowitych , wyprowadza najmniejszą centrosymetryczną macierz, która zawiera M (ta macierz może również zawierać nie dodatnie liczby całkowite).
Macierz centrosymetryczna jest macierzą kwadratową o symetrii obrotowej rzędu 2 - tzn. Pozostaje tą samą macierzą po dwukrotnym obróceniu. Na przykład macierz centrosymetryczna ma lewy górny element taki sam jak prawy dolny prawy, a element nad środkiem taki sam jak ten poniżej środka. Przydatna wizualizacja znajduje się tutaj .
Bardziej formalnie biorąc pod uwagę macierz , tworzą kwadratową macierz N taki sposób, że N jest centrosymmetric i M ⊆ N , a nie ma innego kwadratowych macierzy K , tak że słabe K < słabym N .
jest podzbiorem B (notacja: A ⊆ B ) wtedy i tylko wtedy, gdy każda wartość A i , j pojawia się przy indeksie B i + i ′ , j + j ′ dla niektórych par liczb całkowitych ( i ′ , j ′ ) .
Uwaga : niektóre macierze mają wiele rozwiązań (np. [[3,3],[1,2]]
Są rozwiązywane jako [[2,1,0],[3,3,3],[0,1,2]]
lub [[3,3,3],[1,2,1],[3,3,3]]
); musisz wypisać co najmniej jedno z poprawnych rozwiązań.
Przypadki testowe
input
example output
[[1, 2, 3],
[4, 5, 6]]
[[1, 2, 3, 0],
[4, 5, 6, 0],
[0, 6, 5, 4],
[0, 3, 2, 1]]
[[9]]
[[9]]
[[9, 10]]
[[9, 10],
[10, 9]]
[[100, 200, 300]]
[[100, 200, 300],
[ 0, 0, 0],
[300, 200, 100]]
[[1, 2, 3],
[4, 5, 4]]
[[1, 2, 3],
[4, 5, 4]
[3, 2, 1]]
[[1, 2, 3],
[5, 6, 5],
[3, 2, 1]]
[[1, 2, 3],
[5, 6, 5],
[3, 2, 1]]
[[4, 5, 4],
[1, 2, 3]]
[[3, 2, 1],
[4, 5, 4],
[1, 2, 3]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
[9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
źródło
Odpowiedzi:
Brachylog , 12 bajtów
Wypróbuj online!
W przeciwieństwie do większości odpowiedzi Brachylog, pobiera dane wejściowe przez zmienną wyjściową
.
i przekazuje wynik przez zmienną wejściową?
(mylące, wiem).Wyjaśnienie
8 bajtów, daje wszystkie prawidłowe macierze
Technicznie ten program działa również:
ṁ↔ᵐ↔?aaᵐ
Ale to pozostawi jako zmienne komórki, które mogą przyjąć dowolną wartość (pokazują jako
_XXXXX
, która jest wewnętrzną nazwą zmiennej Prolog). Więc technicznie jest to nawet lepsze niż to, o co pytamy, ale myślę, że nie o to prosi wyzwanie.źródło
≜
opóźnić etykietowanie ...JavaScript (ES6),
192180177 bajtówWypróbuj online!
Algorytm
Przykład:
Testujemy, czy możemy uzupełnić macierz tak, aby była ona centrosymetryczna.
Przykład:
źródło
Galaretka , 27 bajtów
Wypróbuj online!
Dla jasności dodano nowe linie do rzeczywistej wydajności w porównaniu z TIO.
źródło
Python 2 ,
242227226 bajtówWypróbuj online!
Zapisano:
źródło
n=[W*[0]for _ in r(W)]
może byćn=eval(`[W*[0]]*W`)
.Clojure 254 bajtów
Jinkies, Scoob
Wypróbuj online!
źródło