diff options
Diffstat (limited to '2020/3/solve.c')
-rw-r--r-- | 2020/3/solve.c | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/2020/3/solve.c b/2020/3/solve.c deleted file mode 100644 index 2f6312b..0000000 --- a/2020/3/solve.c +++ /dev/null @@ -1,57 +0,0 @@ -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> - -int part_one(FILE *fp) -{ - int res = 0; - - char *line = NULL; - size_t len = 0, strlen = 0; - int curr = 0; - while ((strlen = getline(&line, &len, fp)) != -1) { - if (line[curr % (strlen - 1)] == '#') - res++; - curr += 3; - } - - return res; -} - -#define DOWN_TWO (1 << 15) -int part_two(FILE *fp) -{ - int final = 1; - int opt[] = { 1, 3, 5, 7, 1 | DOWN_TWO }; - - char *line = NULL; - size_t len = 0, strlen = 0; - for (int i = 0; i < sizeof(opt) / sizeof(opt[0]); i++) { - int res = 0, row = 0, curr = 0; - while ((strlen = getline(&line, &len, fp)) != -1) { - if (row++ % 2 == 1 && opt[i] & DOWN_TWO) - continue; - if (line[curr % (strlen - 1)] == '#') - res++; - curr += opt[i] & ~DOWN_TWO; - } - rewind(fp); - final *= res; - } - - return final; -} - -int main(int argc, char *argv[]) -{ - FILE *fp = fopen("input", "r"); - if (!fp) - exit(EXIT_FAILURE); - - printf("%d\n", part_one(fp)); - rewind(fp); - printf("%u\n", part_two(fp)); - - fclose(fp); - return 0; -} |