Informacion
Cada uno de los números del 1 al 9 representa una celda en el vecindario de Moore , siendo 5 la celda central. Entonces:
123
456
789
1={-1,-1} 2={-1, 0} 3={-1, 1}
4={ 0,-1} 5={ 0, 0} 6={ 0, 1}
7={ 1,-1} 8={ 1, 0} 9={ 1, 1}
El reto
Puede tomar datos a través de STDIN, ARGV o argumento de función y devolver el resultado o imprimirlo en STDOUT. La entrada es una cuadrícula N x N (topología de toro, lo que significa que si x o y es <1, entonces x o y = N, y si x o y> N, entonces x o y = 1), y su programa debe generar una interacción de eso cuadrícula reemplazando cada celda con el valor en su celda Moore's Neighborhood.
Ejemplo de cuadrícula de entrada (2 x 2):
13
79
Salida:
97
31
Explicación:
Comenzando en la posición 1,1 tenemos el valor 1, ya que el valor 1 = {- 1, -1} tenemos que recuperar 1 + (- 1), 1 + (- 1) = 0,0. Y debido a que es un toro 0,0, nos ajustamos a N. Entonces recuperamos el valor de la celda en la posición 1,1 (1) con el valor de la celda en la posición 2,2 (9).
Para la siguiente celda 1,2 tenemos el valor 3 (= -1, 1), entonces 1 + (- 1), 2 + (1) = 0,3. Se ajusta a 2,1, que es el valor 7.
El siguiente valor de celda en 2,1 es 7 (= 1, -1), entonces 2+ (1), 1 + (- 1) = 3,0. Se ajusta a 1,2, que es el valor 3.
El siguiente valor de celda en 2,2 es 9 (= 1, 1), entonces 2+ (1), 2 + (1) = 3,3. Se ajusta a 1,1, que es el valor 1.
Más ejemplos
Cuadrícula de entrada (3 x 3):
123
456
789
Rendimiento esperado:
987
654
321
Cuadrícula de entrada (5 x 5):
77497
81982
32236
96336
67811
Rendimiento esperado:
28728
37337
11923
73369
77433
Notas finales
Si tiene alguna pregunta, no dude en comentar. Este es un desafío de código de golf, ¡el código más corto gana!
Respuestas:
APL (33)
APL fue hecho para esto. Esta es una función que toma la cuadrícula de entrada como una matriz N-por-N y devuelve la cuadrícula de salida como una matriz N-por-N.
Prueba:
fuente
Python, 174
Python no fue hecho para esto ... APL fue!
fuente
Python, 105
Toma y devuelve una lista de listas:
Toma y devuelve una cadena (148 caracteres):
fuente
MATLAB - 121 bytes
MATLAB estaba un poco menos hecho para esto que APL, pero un poco más hecho para esto que Python. ;)
Prueba de salida
fuente