Una catasta di sabbia abeliana , per i nostri scopi, è una griglia infinita con coordinate intere, inizialmente prive di sabbia. Dopo ogni secondo, un granello di sabbia viene posto in (0,0). Ogni volta che una cella a griglia ha 4 o più granelli di sabbia, versa contemporaneamente un granello di sabbia a ciascuno dei suoi quattro vicini. I vicini di (x, y) sono (x-1, y), (x + 1, y), (x, y-1) e (x, y + 1).
Quando una cellula si rovescia, può causare la fuoriuscita dei suoi vicini. Alcuni fatti:
- Questa cascata alla fine si fermerà.
- L'ordine in cui le cellule si rovesciano è irrilevante; il risultato sarà lo stesso.
Esempio
Dopo 3 secondi, la griglia appare come
.....
.....
..3..
.....
.....
Dopo 4 secondi:
.....
..1..
.1.1.
..1..
.....
Dopo 15 secondi:
.....
..3..
.333.
..3..
.....
E dopo 16 secondi:
..1..
.212.
11.11
.212.
..1..
La sfida
Nel minor numero di byte possibile, scrivere una funzione che accetta un singolo numero intero positivo t e genera un'immagine della pila di sabbia dopo t secondi.
Ingresso
Un singolo numero intero positivo t , in qualsiasi formato tu scelga.
Produzione
Un'immagine della pila di sabbia dopo t secondi, usando i personaggi
. 1 2 3
Modifica: usa quattro caratteri distinti che ti piacciono o disegna un'immagine. Se non stai utilizzando ".123" o "0123", specifica nella risposta il significato dei caratteri.
A differenza degli esempi, l'output dovrebbe contenere il numero minimo di righe e colonne necessarie per mostrare la parte diversa da zero della sandpile.
Cioè, per l'ingresso 3, l'uscita dovrebbe essere
3
Per 4, l'output dovrebbe essere
.1.
1.1
.1.
punteggio
Si applica il punteggio golf standard.
Regole
Non sono consentite funzioni di linguaggio o librerie che già sanno cos'è una sandpile.
Modifica: la sezione di output è stata modificata, la limitazione del set di caratteri è stata completamente eliminata. Usa quattro caratteri o colori distinti che ti piacciono.
.
per celle vuote? Possiamo avere 0
come cella vuota valida?
0
? Qual è il risultato allora?