X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=06b.c;h=bd2e22064bb9b72193123c1a02180af50947f8b3;hb=a622aa41088ddf29d38c50e2032ca84984b0e12b;hp=0b2f0761b63b4df9755ffaf89e47e11b81b7c151;hpb=2d015db00d7612786a98db0cdfda291b6dc08389;p=advent21.git diff --git a/06b.c b/06b.c index 0b2f076..bd2e220 100644 --- a/06b.c +++ b/06b.c @@ -2,22 +2,32 @@ #include #include +#include + int main() { - char buf[1000]; - if (fgets(buf, 1000, stdin) == NULL) - return 1; - long fish[9] = {0}; + char *buf = NULL; + size_t len = 0; + mpz_t fish[9]; + for (int i = 0; i<9; i++) + mpz_init_set_ui(fish[i], 0); + + getline(&buf, &len, stdin); char *p = strtok(buf, ","); - fish[atoi(p)]++; - while ((p = strtok(NULL, ",")) != NULL) - fish[atoi(p)]++; + int n = atoi(p); + mpz_add_ui(fish[n], fish[n], 1); + while ((p = strtok(NULL, ",")) != NULL) { + n = atoi(p); + mpz_add_ui(fish[n], fish[n], 1); + } - for (long day = 0; day<256; day++) - fish[(day+7) % 9] += fish[day%9]; + for (long day = 0; day<256; day++) { + n = (day+7) % 9; + mpz_add(fish[n], fish[n], fish[day%9]); + } - long sum = 0; - for (long i = 0; i<=8; i++) - sum += fish[i]; - printf("%lu\n", sum); + for (long i = 1; i<=8; i++) + mpz_add(fish[0], fish[0], fish[i]); + mpz_out_str(stdout, 10, fish[0]); + putchar('\n'); }