5 int gol_tick(struct gol_board *state)
7 struct gol_board tmp_state;
8 tmp_state = (struct gol_board ) {
9 .live_cells = malloc(10 * sizeof(typeof(*tmp_state.live_cells))),
17 if (!tmp_state.live_cells) {
20 unsigned char n_live_adj;
21 for (int i = state->min_x; i < state->max_x; ++i) {
22 for (int j = state->min_y; j < state->max_y; ++j) {
23 n_live_adj = gol_is_live(state, i - 1, j - 1) +
24 gol_is_live(state, i, j - 1) +
25 gol_is_live(state, i + 1, j - 1) +
26 gol_is_live(state, i - 1, j) +
27 gol_is_live(state, i + 1, j) +
28 gol_is_live(state, i - 1 , j + 1) +
29 gol_is_live(state, i, j + 1) +
30 gol_is_live(state, i + 1, j + 1);
34 gol_vivify(&tmp_state, i, j);
37 if (gol_is_live(state, i, j)) {
38 gol_vivify(&tmp_state, i, j);
46 free(state->live_cells);