One Solution to Game of Life ...
•program
Life;
•config
var n : integer = 512;
•region R = [1..n, 1..n];
•direction N = [-1, 0]; NE = [-1, 1];
• E = [ 0, 1]; SE = [ 1, 1];
• S = [ 1, 0]; SW = [ 1,-1];
• W = [ 0,-1]; NW = [-1,-1];
•var Ncount : [R] byte;
• TW : [R] boolean;
•procedure
Life();
• [R] begin
• TW := (Index1 * Index2) % 2; --
Make some data
• repeat
• Ncount := (TW@^N + TW@^NE +
TW@^E + TW@^SE
• + TW@^S + TW@^SW +
TW@^W + TW@^NW);
• TW := (Ncount=2 & TW) |
(Ncount=3 & !TW);
• until false;
• end;
•end;