5 int gol_tick(struct gol_board *state)
7 struct gol_board tmp_state;
9 unsigned char n_live_adj;
12 tmp_state = (struct gol_board ) {
13 .live_cells = malloc(10 * sizeof(int_least32_t)),
22 if (!tmp_state.live_cells) {
26 for (i = state->min_x - 1; i <= state->max_x + 1; ++i) {
27 for (j = state->min_y - 1; j <= state->max_y + 1; ++j) {
29 gol_is_live(state, i - 1, j - 1, &is_live);
30 n_live_adj += is_live;
31 gol_is_live(state, i, j - 1, &is_live);
32 n_live_adj += is_live;
33 gol_is_live(state, i + 1, j - 1, &is_live);
34 n_live_adj += is_live;
35 gol_is_live(state, i - 1, j, &is_live);
36 n_live_adj += is_live;
37 gol_is_live(state, i + 1, j, &is_live);
38 n_live_adj += is_live;
39 gol_is_live(state, i - 1 , j + 1, &is_live);
40 n_live_adj += is_live;
41 gol_is_live(state, i, j + 1, &is_live);
42 n_live_adj += is_live;
43 gol_is_live(state, i + 1, j + 1, &is_live);
44 n_live_adj += is_live;
48 if(!gol_vivify(&tmp_state, i, j)) {
54 if (gol_is_live(state, i, j, &is_live) && is_live) {
55 gol_vivify(&tmp_state, i, j);
63 free(state->live_cells);