day 19 part 2 solved
[aoc_eblake.git] / 2016 / advent16.c
blobc71b84339e3c9a450ac2dbe9e1f7426d91f8ace7
1 #define _GNU_SOURCE 1
2 #include <stdio.h>
3 #include <string.h>
4 #include <stdlib.h>
5 #include <unistd.h>
7 #define GOAL 35651584
8 char buf[GOAL * 2];
10 int
11 main (int argc, char **argv)
13 int goal = GOAL;
14 char *seed = "01110110101001000";
15 if (argc > 1)
16 seed = argv[1];
17 if (argc == 3)
18 goal = atoi (argv[2]);
19 int len = stpcpy (buf, seed) - buf;
20 while (len < goal) {
21 buf[len] = '0';
22 for (int i = 0; i < len; i++)
23 buf[2 * len - i] = buf[i] ^ 1;
24 len = 2 * len + 1;
26 len = goal;
27 if (len < 50)
28 printf ("buf contents: %.*s\n", len, buf);
29 do {
30 for (char *p = buf, *q = buf; p - buf < len; p += 2, q++)
31 *q = '0' + (p[0] == p[1]);
32 buf[len >>= 1] = '\0';
33 printf ("checksum length %d\n", len);
34 } while (!(len & 1));
35 printf ("final checksum: %s\n", buf);
36 return 0;