(Hay preguntas relacionadas sobre pilas de arena infinitas y la búsqueda de elementos de identidad de pilas de arena ).
Dada una matriz de enteros no negativos, devuelve una matriz de las mismas dimensiones, pero derribada :
- Si la matriz no contiene ningún valor mayor que 4, devuélvalo.
- Cada "celda" que es mayor que 3 se reduce en 4, y todas las celdas directamente vecinas (arriba, abajo, izquierda y derecha) se incrementan, si existen.
- GOTO 1.
Ejemplos:
0 1 0 0 2 0
2 4 0 -> 3 0 1
0 0 3 0 1 3
1 2 3 2 3 4 2 5 1 4 1 2 0 3 3 0 3 3 0 3 3
4 5 6 -> 2 4 4 -> 4 2 3 -> 0 5 4 -> 3 2 1 -> 3 3 1 -> 3 3 2
7 8 9 5 7 7 2 6 5 4 3 2 0 5 3 1 1 4 1 2 0
(Solo necesita devolver el resultado final. La ruta en la que lo alcanza puede diferir de la que se muestra aquí: no importa en qué orden realice las operaciones de caída, todos conducen al mismo resultado).
Para una explicación más profunda y alguna motivación, vea este video de Numberphile o el artículo de Wikipedia sobre el modelo de pila de arena de Abelian .
Reglas:
- Puede tomar entrada y salida de cualquiera de las formas estándar
- Las lagunas están prohibidas
- La entrada y la salida pueden ser:
- una lista anidada:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- una lista simple:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
y la forma - algún tipo de matriz nativa
- una cadena, por ejemplo
1 2 3\n4 5 6\n7 8 9
- o cualquier otra cosa que funcione en tu idioma.
- una lista anidada:
- La entrada y la salida deben estar en la misma forma
- La entrada puede contener números más grandes que los que se muestran aquí, pero el tamaño puede estar limitado por los límites de su idioma (equivalentes MAXINT, si corresponde)
- La matriz puede tener cualquier forma (por ejemplo, 1x1, 2x2, 3x3, 4x4, 2x7, 11x3, ...)
- No necesita manejar el caso donde la forma es 0xN o Nx0.
Casos de prueba
[[2, 5, 4], [8, 6, 4], [1, 2, 3]] -> [[3, 3, 0], [1, 2, 2], [1, 3, 2]]
[[0, 0, 2], [1, 3, 3], [0, 0, 0]] -> [[0, 0, 2], [1, 3, 3], [0, 0, 0]]
[[9, 9, 9], [9, 9, 9], [9, 9, 9]] -> [[1, 3, 1], [3, 1, 3], [1, 3, 1]]
[[4, 5], [2, 3]] -> [[2, 3], [0, 1]]
[[2, 3, 5], [2, 2, 0]] -> [[3, 0, 2], [2, 3, 1]]
[[7]] -> [[3]]