Wprowadzenie
Na potrzeby tego wyzwania zdefiniujemy sąsiadów elementu w macierzy kwadratowej (takiej, że ) jako wszystkie wpisy które sąsiadują bezpośrednio z po przekątnej, w poziomie lub w pionie (tzn. „otaczają” , bez owijania się).A E = A i , j A E
W przypadku pedantów formalną definicją sąsiadów dla macierzy jest (indeksowany 0): gdzie n×nA N i ,E i ,
Powiedzmy, że element o indeksie żyje we wrogości, jeśli jest chroniony prawem autorskim do wszystkich swoich sąsiadów (to znaczy ). Niestety, ten biedny wpis nie może pożyczyć nawet kubka cukru od swoich niegrzecznych pobliskich mieszkańców ...
Zadanie
Dość historii: Biorąc pod uwagę macierz kwadratową dodatnich liczb całkowitych, wypisz jedną z następujących opcji:
- Płaska lista elementów (deduplikowana lub nie) wskazująca wszystkie wpisy, które zajmują niektóre indeksy w tak że sąsiedzi są wrogo nastawieni.
- Macierz boolowska z s na pozycjach, w których sąsiedzi są wrogo nastawieni, a przeciwnym razie (możesz wybrać dowolne inne spójne wartości zamiast i ).
- Lista par indeksów które reprezentują wrogie dzielnice.
Implementacja referencji w Physica - obsługuje również składnię Pythona dla I / O. Możesz pobierać dane wejściowe i generować dane wyjściowe dowolną standardową metodą w dowolnym rozsądnym formacie, zwracając uwagę, że te luki są domyślnie zabronione. To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach (w każdym języku)!
Co więcej, możesz również wziąć rozmiar matrycy jako dane wejściowe i dodatkowo możesz wziąć matrycę jako płaską listę, ponieważ zawsze będzie kwadratowa.
Przykład
Rozważ następującą macierz:
Odpowiednimi sąsiadami każdego elementu są:
i j – E -> Neighbours | All coprime to E?
|
0 0 – 64 -> {10; 27; 22} | False
0 1 – 10 -> {64; 14; 27; 22; 32} | False
0 2 – 14 -> {10; 22; 32} | False
1 0 – 27 -> {64; 10; 22; 53; 58} | True
1 1 – 22 -> {64; 10; 14; 27; 32; 53; 58; 36} | False
1 2 – 32 -> {10; 14; 22; 58; 36} | False
2 0 – 53 -> {27; 22; 58} | True
2 1 – 58 -> {27; 22; 32; 53; 36} | False
2 2 – 36 -> {22; 32; 58} | False
Dlatego wynik musi być jednym z następujących:
{27; 53}
{{0; 0; 0}; {1; 0; 0}; {1; 0; 0}}
{(1; 0); (2; 0)}
Przypadki testowe
Input –> Version 1 | Version 2 | Version 3
[[36, 94], [24, 69]] ->
[]
[[0, 0], [0, 0]]
[]
[[38, 77, 11], [17, 51, 32], [66, 78, 19]] –>
[38, 19]
[[1, 0, 0], [0, 0, 0], [0, 0, 1]]
[(0, 0), (2, 2)]
[[64, 10, 14], [27, 22, 32], [53, 58, 36]] ->
[27, 53]
[[0, 0, 0], [1, 0, 0], [1, 0, 0]]
[(1, 0), (2, 0)]
[[9, 9, 9], [9, 3, 9], [9, 9, 9]] ->
[]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[]
[[1, 1, 1], [1, 1, 1], [1, 1, 1]] ->
[1, 1, 1, 1, 1, 1, 1, 1, 1] or [1]
[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
[[35, 85, 30, 71], [10, 54, 55, 73], [80, 78, 47, 2], [33, 68, 62, 29]] ->
[71, 73, 47, 29]
[[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]
[(0, 3), (1, 3), (2, 2), (3, 3)]