Abelian sandpile model: Difference between revisions

Added XPL0 example.
(→‎{{header|11l}}: Write PPM)
(Added XPL0 example.)
Line 3,500:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
</pre>
 
=={{header|XPL0}}==
<lang XPL0>def Size = 200;
char Pile1(Size*Size), Pile2(Size*Size);
int Spigot, I, X, Y;
[SetVid($13); \VGA 320x200x8
FillMem(Pile1, 0, Size*Size);
FillMem(Pile2, 0, Size*Size);
Spigot:= 400_000;
repeat I:= 0;
for Y:= 0 to Size-1 do
for X:= 0 to Size-1 do
[if X=Size/2 & Y=Size/2 then
[Spigot:= Spigot-4;
Pile1(I):= Pile1(I)+4;
];
if Pile1(I) >= 4 then
[Pile1(I):= Pile1(I)-4;
Pile2(I-1):= Pile2(I-1)+1;
Pile2(I+1):= Pile2(I+1)+1;
Pile2(I-Size):= Pile2(I-Size)+1;
Pile2(I+Size):= Pile2(I+Size)+1;
];
Point(X, Y, Pile1(I)*2);
I:= I+1;
];
I:= Pile1; Pile1:= Pile2; Pile2:= I;
until Spigot < 4;
]</lang>
 
{{out}}
<pre>
[http://www.xpl0.org/rpi/sand.gif]
</pre>
772

edits