Uma pilha de areia abeliana , para nossos propósitos, é uma grade infinita com coordenadas inteiras, inicialmente vazias de areia. Após cada segundo, um grão de areia é colocado em (0,0). Sempre que uma célula da grade possui 4 ou mais grãos de areia, ela derrama um grão de areia para cada um de seus quatro vizinhos simultaneamente. Os vizinhos de (x, y) são (x-1, y), (x + 1, y), (x, y-1) e (x, y + 1).
Quando uma célula é derramada, pode causar derramamento de seus vizinhos. Alguns fatos:
- Essa cascata acabará eventualmente.
- A ordem na qual as células se derramam é irrelevante; O resultado será o mesmo.
Exemplo
Após 3 segundos, a grade parece
.....
.....
..3..
.....
.....
Após 4 segundos:
.....
..1..
.1.1.
..1..
.....
Após 15 segundos:
.....
..3..
.333.
..3..
.....
E depois de 16 segundos:
..1..
.212.
11.11
.212.
..1..
O desafio
No menor número de bytes possível, escreva uma função que use um único número inteiro positivo t e mostre uma imagem do monte de areia após t segundos.
Entrada
Um único número inteiro positivo t , em qualquer formato que você escolher.
Resultado
Uma imagem do monte de areia após t segundos, usando os caracteres
. 1 2 3
Editar: use quaisquer quatro caracteres distintos que desejar ou faça um desenho. Se você não estiver usando ".123" ou "0123", especifique na sua resposta o que os caracteres significam.
Diferentemente dos exemplos, sua saída deve conter o número mínimo de linhas e colunas necessárias para mostrar a parte diferente de zero do sandpile.
Ou seja, para a entrada 3, a saída deve ser
3
Para 4, a saída deve ser
.1.
1.1
.1.
Pontuação
A pontuação de golfe padrão se aplica.
Regras
Não são permitidas funções de linguagem ou bibliotecas que já sabem o que é um monte de areia.
Editar: a seção de saída foi editada, a restrição do conjunto de caracteres foi completamente removida. Use quatro caracteres ou cores distintas que desejar.
.
células vazias? Podemos ter 0
como uma célula vazia válida?
0
? Qual é o resultado, então?