cleanup
[advent21.git] / 06b.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 #include <gmp.h>
6
7 int main()
8 {
9 char *buf = NULL;
10 size_t len = 0;
11 mpz_t fish[9];
12 for (int i = 0; i<9; i++)
13 mpz_init_set_ui(fish[i], 0);
14
15 getline(&buf, &len, stdin);
16 char *p = strtok(buf, ",");
17 int n = atoi(p);
18 mpz_add_ui(fish[n], fish[n], 1);
19 while ((p = strtok(NULL, ",")) != NULL) {
20 n = atoi(p);
21 mpz_add_ui(fish[n], fish[n], 1);
22 }
23
24 for (long day = 0; day<256; day++) {
25 n = (day+7) % 9;
26 mpz_add(fish[n], fish[n], fish[day%9]);
27 }
28
29 for (long i = 1; i<=8; i++)
30 mpz_add(fish[0], fish[0], fish[i]);
31 mpz_out_str(stdout, 10, fish[0]);
32 putchar('\n');
33 }