1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
// Modeling a 2D surface with a von neumann
surface(X,Y) = route(X*Y, X*Y, par(x, X, par(y, Y, neighborhood(X,Y).vonNeumann(x,y) ) ) );
// von Neumann neighborhood (or 4-neighborhood)
neighborhood(X,Y) = environment {
vonNeumann(x,y) =
(coord(x,y), coord(x+1,y)),
(coord(x,y), coord(x-1,y)),
(coord(x,y), coord(x,y+1)),
(coord(x,y), coord(x,y-1));
Moore(x,y) =
(coord(x,y), coord(x+1,y)),
(coord(x,y), coord(x-1,y)),
(coord(x,y), coord(x,y+1)),
(coord(x,y), coord(x,y-1)),
(coord(x,y), coord(x+1,y+1)),
(coord(x,y), coord(x-1,y-1)),
(coord(x,y), coord(x-1,y+1)),
(coord(x,y), coord(x+1,y-1));
coord(x,y) = (1+x+y*X) * (x>=0) * (x<X) * (y>=0) * (y<Y);
};
process = surface(2,2);
/*
0 1 2
3 4 5
6 7 8
0 1
2 3
*/
|