diff options
| -rw-r--r-- | lib.h | 3 | ||||
| -rw-r--r-- | main.c | 11 | 
2 files changed, 7 insertions, 7 deletions
| @@ -2,12 +2,13 @@  #define LIB_H  #include <stdbool.h> +#include <stdint.h>  #include <stdlib.h>  typedef struct State  {    // Sandpiles -  unsigned char *data; +  uint64_t *data;    size_t dwidth;    size_t window_len; @@ -17,12 +17,11 @@  void step(state_t *state)  { -  state->data[((state->dwidth / 2) * state->dwidth) + (state->dwidth / 2)]++;    for (size_t i = 0; i < state->dwidth; ++i)      for (size_t j = 0; j < state->dwidth; ++j)        if (state->data[(i * state->dwidth) + j] >= 4)        { -        unsigned char *references[] = { +        uint64_t *references[] = {              (j == 0) ? NULL : &state->data[((i)*state->dwidth) + j - 1],              (i == state->dwidth - 1)                  ? NULL @@ -33,8 +32,8 @@ void step(state_t *state)              (i == 0) ? NULL : &state->data[((i - 1) * state->dwidth) + j]};          for (size_t k = 0; k < 4; ++k)            if (references[k]) -            *references[k] += 1; -        state->data[(i * state->dwidth) + j] = 0; +            *references[k] += state->data[(i * state->dwidth) + j] / 4; +        state->data[(i * state->dwidth) + j] %= 4;        }  } @@ -97,8 +96,8 @@ int main(void)      for (size_t i = 0; i < state.dwidth; ++i)        for (size_t j = 0; j < state.dwidth; ++j)        { -        Color c                = {0}; -        unsigned char sandpile = state.data[(i * state.dwidth) + j]; +        Color c           = {0}; +        uint64_t sandpile = state.data[(i * state.dwidth) + j];          if (sandpile == 0)            c = BLACK;          else if (sandpile == 1) | 
