Abelian sandpile model: Difference between revisions

m (→‎{{header|Phix}}: added syntax colouring the hard way)
Line 1,906:
0 0 0 0 0 1 2 2 2 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0</pre>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<lang Mathematica>ClearAll[sp]
sp[s_List] + sp[n_Integer] ^:= sp[s] + sp[ConstantArray[n, Dimensions[s]]]
sp[s_List] + sp[t_List] ^:= Module[{dim, r, tmp, neighbours}, dim = Dimensions[s];
r = s + t;
While[Max[r] > 3, r = ArrayPad[r, 1, 0];
tmp = Quotient[r, 4];
r -= 4 tmp;
r += RotateLeft[tmp, {0, 1}] + RotateLeft[tmp, {1, 0}] +
RotateLeft[tmp, {0, -1}] + RotateLeft[tmp, {-1, 0}];
r = ArrayPad[r, -1];];
sp[r]
]
u = sp[CenterArray[250, {15, 15}]];
u += sp[0];
StringRiffle[StringJoin /@ Map[ToString, u[[1]], {2}], "\n"]</lang>
{{out}}
<pre>000000000000000
000001222100000
000021020120000
000233323332000
002322222223200
011322232223110
020322030223020
022223323322220
020322030223020
011322232223110
002322222223200
000233323332000
000021020120000
000001222100000
000000000000000</pre>
 
=={{header|Nim}}==
1,111

edits