| | |
| | |
| | |
| |
|
| | #include <assert.h> |
| | #include "life.h" |
| | #include "_cgo_export.h" |
| |
|
| | const int MYCONST = 0; |
| |
|
| | |
| | |
| | |
| | void |
| | Step(int x, int y, int *a, int *n) |
| | { |
| | struct GoStart_return r; |
| |
|
| | |
| | |
| | r = GoStart(0, x, y, 0, x / 2, 0, y / 2, a, n); |
| | assert(r.r0 == 0 && r.r1 == 100); |
| | r = GoStart(1, x, y, x / 2, x, 0, y / 2, a, n); |
| | assert(r.r0 == 1 && r.r1 == 101); |
| | GoStart(2, x, y, 0, x / 2, y / 2, y, a, n); |
| | GoStart(3, x, y, x / 2, x, y / 2, y, a, n); |
| | GoWait(0); |
| | GoWait(1); |
| | GoWait(2); |
| | GoWait(3); |
| | } |
| |
|
| | |
| | void |
| | DoStep(int xdim, int ydim, int xstart, int xend, int ystart, int yend, int *a, int *n) |
| | { |
| | int x, y, c, i, j; |
| |
|
| | for(x = xstart; x < xend; x++) { |
| | for(y = ystart; y < yend; y++) { |
| | c = 0; |
| | for(i = -1; i <= 1; i++) { |
| | for(j = -1; j <= 1; j++) { |
| | if(x+i >= 0 && x+i < xdim && |
| | y+j >= 0 && y+j < ydim && |
| | (i != 0 || j != 0)) |
| | c += a[(x+i)*xdim + (y+j)] != 0; |
| | } |
| | } |
| | if(c == 3 || (c == 2 && a[x*xdim + y] != 0)) |
| | n[x*xdim + y] = 1; |
| | else |
| | n[x*xdim + y] = 0; |
| | } |
| | } |
| | } |
| |
|