Conway's Game of Life: Maple
I'm trying to model Conway's Game of Life and here's my code:
> f := proc (a, b, c, d, e, f, g, h)
local alivecount;
alivecount := b+c+d+e+f+g+h;
if a = 1 and alivecount < 2 then a := 0
elif a = 1 and 3 < alivecount then a := 1
elif a = 0 and alivecount = 3 then a := 1
end if;
end proc;
> run2dca := proc (n::integer, f:: procedure, S0:: (list(list(numeric))), m::integer) local S, x, y, q, i, j;
S := [S0];
x := Array(0 .. n-1, 0 .. n-1, S0);
y := Array(0 .. n-1, 0 .. n-1);
for q to m do
for i from 0 to n-1 do
for j from 0 to n-1 do
y[i][j] = f(x[i][j], x[i+1 mod n)][j], x[i-1 mod n)][j], x[i][j+1 mod n)], x[i][j-1 mod n], x[i+1 mod n)][j+1 mod n)], x[i+1 mod n)][j-1 mod n)], x[i-1 mod n)][j+1 mod n)], x[i-1 mod n)][j-1 mod n)])
end do;
end do;
S := [op(S), convert(y, list)];
x, y := y, x
end do;
S
end proc;
n:= number of rows/columns of the nxn list
f:= update function
S0 := 2 dimensional nxn list
m := number of iterations
Yet when I try and run my code:
> BLOCK := [[1,1],[1,1]];
> run2dca(2,f, BLOCK, 5);
Error, (in run2dca) bad index into Array
I get the above error, and I have no idea what it means. Any help would be appreciated
EDIT: I've narrowed down the error to this line of code, x := Array(0 .. n-1, 0 .. n-1, S0); I have no idea what is wrong thogh