Introducción
Para los propósitos de este desafío, definiremos los vecinos de un elemento en una matriz cuadrada A (tal que E = A i , j ) como todas las entradas de A que están inmediatamente adyacentes en diagonal, horizontal o vertical a E (es decir ellos "rodean" E , sin envolver).
Para los pedantes, una definición formal de los vecinos de para unn×nmatixAes (0-indexado): N i , donde E i ,
Digamos que el elemento en el índice
Tarea
Suficientes historias: dada una matriz cuadrada de enteros positivos, arroje uno de los siguientes:
- Una lista plana de elementos (deduplicados o no) que indica todas las entradas que ocupan algunos índices en modo que los vecinos sean hostiles.M N i ,
- Una matriz booleana con s en las posiciones donde los vecinos son hostiles y caso contrario (puede elegir cualquier otro valor consistente en lugar de y ).0 0 1
- La lista de pares de índices que representan vecindarios hostiles.
Implementación de referencia en Physica : también admite la sintaxis de Python para E / S. Puede tomar entradas y proporcionar salidas a través de cualquier método estándar y en cualquier formato razonable, mientras toma nota de que estas lagunas están prohibidas de forma predeterminada. Este es el código de golf, por lo que gana el código más corto en bytes (en todos los idiomas).
Además, también puede tomar el tamaño de la matriz como entrada y, además, puede tomar la matriz como una lista plana, ya que siempre será cuadrada.
Ejemplo
Considere la siguiente matriz:
Los vecinos correspondientes de cada elemento son:
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
Y, por lo tanto, el resultado debe ser uno de los siguientes:
{27; 53}
{{0; 0; 0}; {1; 0; 0}; {1; 0; 0}}
{(1; 0); (2; 0)}
Casos de prueba
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)]