#include #include #include #define MAX_BOARDS 100 static char *ReadLine(char *p, size_t size, FILE *fp) { if ((p=fgets(p, size, fp))) { size_t l = strlen(p); while(l && p[l-1] == '\n') { p[--l] = 0; } } return p; } int main(void) { char buff[1024]; char *num = NULL; unsigned long long num_count = 0; char *p = NULL; unsigned long long f = 0; int cycle = 0; ReadLine(buff, sizeof buff, stdin); p = strtok(buff, ","); while(p) { num = realloc(num, (num_count + 1) * sizeof *num); num[num_count++] = atoi(p); p = strtok(NULL, ","); } for(cycle = 0; cycle < 256; cycle++) { int to_add = 0; for(f = 0; f < num_count; f++) { if (num[f] == 0) { to_add++; num[f] = 6; } else { num[f]--; } } if (to_add) { num = realloc(num, (num_count + to_add) * sizeof *num); for(f = 0; f < to_add; f++) { num[num_count++] = 8; } } printf("cycle/num_count = %d/%llu\n", cycle, num_count); } printf("num_count=%llu\n", num_count); return 0; }