Una pila de arena abeliana , para nuestros propósitos, es una cuadrícula infinita con coordenadas enteras, inicialmente vacía de arena. Después de cada segundo, se coloca un grano de arena a (0,0). Cada vez que una celda de cuadrícula tiene 4 o más granos de arena, derrama un grano de arena a cada uno de sus cuatro vecinos simultáneamente. Los vecinos de (x, y) son (x-1, y), (x + 1, y), (x, y-1) y (x, y + 1).
Cuando una célula se derrama, puede provocar que sus vecinos se derramen. Algunos hechos:
- Esta cascada finalmente se detendrá.
- El orden en que se derraman las células es irrelevante; El resultado será el mismo.
Ejemplo
Después de 3 segundos, la cuadrícula se ve como
.....
.....
..3..
.....
.....
Después de 4 segundos:
.....
..1..
.1.1.
..1..
.....
Después de 15 segundos:
.....
..3..
.333.
..3..
.....
Y después de 16 segundos:
..1..
.212.
11.11
.212.
..1..
El reto
En el menor número de bytes posible, escriba una función que tome un solo entero positivo t y genere una imagen de la pila de arena después de t segundos.
Entrada
Un solo entero positivo t , en cualquier formato que elija.
Salida
Una imagen de la pila de arena después de t segundos, usando los caracteres
. 1 2 3
Editar: utilice los cuatro caracteres distintos que desee o dibuje una imagen. Si no está utilizando ".123" o "0123", especifique en su respuesta lo que significan los caracteres.
A diferencia de los ejemplos, su salida debe contener el número mínimo de filas y columnas necesarias para mostrar la parte distinta de cero de la pila de arena.
Es decir, para la entrada 3, la salida debe ser
3
Para 4, la salida debe ser
.1.
1.1
.1.
Puntuación
Se aplica la puntuación estándar de golf.
Reglas
No se permiten funciones de lenguaje ni bibliotecas que ya sepan qué es un sandpile.
Editar: la sección de salida se ha editado, la restricción del juego de caracteres se ha eliminado por completo. Usa cuatro caracteres o colores distintos que te gusten.
.
celdas vacías? ¿Podemos tener 0
como una celda vacía válida?
0
? ¿Cuál es la salida entonces?