diff options
author | Marvin Borner | 2020-12-03 18:57:26 +0100 |
---|---|---|
committer | Marvin Borner | 2020-12-03 18:57:26 +0100 |
commit | 0134ebd5dac9754045e619423cacca14f8fedb0d (patch) | |
tree | 7f1876e690b14f0092738d7c21a5a8ad8d902d12 | |
parent | fadf98eb91030a678a3750f62ed019a6a81e9969 (diff) |
Added 3rd solution
-rw-r--r-- | 2020/3/Makefile | 10 | ||||
-rw-r--r-- | 2020/3/input | 323 | ||||
-rw-r--r-- | 2020/3/solve.c | 57 |
3 files changed, 390 insertions, 0 deletions
diff --git a/2020/3/Makefile b/2020/3/Makefile new file mode 100644 index 0000000..769d06d --- /dev/null +++ b/2020/3/Makefile @@ -0,0 +1,10 @@ +.PHONY: solve.c + +solve.o: solve.c + @gcc $+ -o $@ + +clean: + @rm -f *.o + +run: solve.o + @./solve.o diff --git a/2020/3/input b/2020/3/input new file mode 100644 index 0000000..86ee0e3 --- /dev/null +++ b/2020/3/input @@ -0,0 +1,323 @@ +.#......##..#.....#....#.#.#... +.#.#...#.##.#..........#...##.. +.........#.....#.####........#. +.......#.#...#.#............... +..#....#...#.#...#.#...#.#..... +...#...........#..#.........#.# +....#..#....#..#..#.#...#..##.. +#...........#..#.....#.......#. +#..#...#...#.###...#...#.#...#. +#...#.#.......#...#...#...##.## +..#..................#.#.#....# +..#.##....#........##.......... +.....#....#....#.#.......#..... +##.#..##.#.....###.......#..... +......#...###....#..#.#...#.... +..............#.........#.##... +#......#.............#....#...# +.#..#......#.###....#...#.....# +..#........#.....#.....#...#..# +.......#...#..............#..#. +..#...#........#...##........#. +.#........#....#......#......#. +....#..#.###.......##....#.#..# +..#..###..#.................... +......#...#....#.........#.#... +....#.##................#..#... +....#......######.....#........ +.#......##.......#....#..##.### +..#...##.###..#.......#....#... +....#.###...#.#.#........#..... +...###...#.......#..........#.# +..........#...#..........##.#.. +..#....#........#.....#....#..# +..#...#.#....##..#...##....#... +........##...#..##.....#....... +###.......#.#...#...#.......#.# +....#.#....##.###........#..... +.....#..............#....##..## +#......#.#....#.#......#.....## +.....#....#..#......#...#...... +..#.##..#.....#..#....#......#. +.....#.#.#..........##....#.... +.........#..#..........#.#..... +.##..#...#......#.#..#....#.... +#.#..##.......#.#......##...... +..#.#....#.#.....#............. +.#.........#.......#..#.#...... +##.........#..##.#......#...... +#..#.....#...#.....#.........#. +..........#..##..##.#..##...### +..##.....#...#..##...##.#.#.... +..#..........#.#.....##.#....#. +.##..#..#.........###.......#.. +......##....#...##....##....... +.....#.#.##...............#.... +#..#......#.....#..#..#.#.....# +.....##.#....#.#.....#.#.#..... +....#..#.#..##....#.....#....#. +#...#.....#....#....#.#.#...... +.....#................#.......# +.......#..#.#...#.#......#..#.# +...........#....#....###...#.#. +#.##....##..###.#.#......#.##.# +..##...#.#..#..#...#.....#.#.#. +#.....###.#..#.#...#.#......#.# +..##.#...#...#.#.....#.#....... +#....#...#.##......#.#......#.. +..#.....##.....#............... +.....###...##.#...........#.... +...#..##.....##....#........... +.....#..#......#..........#.... +....##..##.#...#...#.#.....#.## +.#.....###..###.#...#.#..#....# +.#..........#...#..#.#.#..#...# +.##.##..#..#....#....####...... +....#..#.#..........#.......... +###...#.#..#..#...#..###....... +####.#...#....#..#...#..#...... +.....##....#.#...#....##....##. +....#.#.##....#.##..#....#.#.#. +#......#..#.###....#####.##.... +..##..#.#.#..#........##.##..## +#.#...#..#..#......#..#.....#.. +.###.....#.#....#.#..##.....#.# +....#......#.#...#...#.#....#.# +.....#.###.##.................. +.#..........#........#.#...##.# +.##......#.#.#..#....##.###..#. +..#.##....#....#.........#.#..# +........#..#..#.#.####.....##.. +#..#.##.#......#.#..##.#...#..# +..#.#.##..#.##..........#...... +##.#.....#.#.##..#..##.....##.# +.##........#..#.....#...#.##.## +...#....#.#.#.........##.....#. +...#....#.#....#...#..#........ +.....#...#..#...#.##......##... +##.........#......#..........## +.#......#.....##....#.#.#.....# +..#.###......#..#.#....#.....#. +.#.......#...#...#.#.#.#..##... +...#..............#...###.....# +...##......#.#..#.#........#.#. +..##.#....#..........##...#.#.. +..#...#.....#.######...##...#.. +#...#...#............#.....#... +.###..###.##..#.........#...... +.#........##..#....#...#.#..##. +#.#.##.#.#...###............... +..#.#.#......#.#.#....#.....#.# +.#...........#.##.#..#.###..... +.###.#....#...........##.#.#... +.#...#...........#..##......... +.#...#.#...........#..###....#. +.##.......#.....#.....##....#.. +#.......#........#...##.##..#.# +....#..###..#.....##.......#... +......###.#...#..#....#.#...#.. +..#..#.......##...#.#.#...#.... +......#..#.......#.......##.#.. +#.#....###.....#...#..#...#.... +#...#.##.#........#..........## +.....#.#.##.#.#..#..##.......## +.#.#.......##....#.#........... +#..##.............##...#.#..#.. +#...........#.#......#.##.##..# +...#...#...........#....###.#.# +.##..#.#.#....#....#####....... +..#...#.....#.#....#........... +.#..#........#.....#.#......#.. +.#.........#...#...#.#.#..#.... +.##.##......#.#...#.......#...# +.##...#..#..........#...#.....# +#..........#..#...#.#......#... +....##......#...##..##..#....#. +.##.......#...#.#..##..#..#.... +.#.#................#....#..... +..#..#..###.......#............ +...##.....#..#......#....#..... +....#...###...#....#..##...#.#. +#.........#.......#...#....#... +.#.#...#.#....##....#.#..##.#.. +...#..#..#....#..#.#..##.....## +..#..#.#.#....#...#....#..#.... +......###.....#...##.#..#.#...# +.#.#.#..#.##........#.#....#... +.#..........#....#.#.......#... +#.....#........#........#....#. +.#.#..#...#...................# +....####..#..#..#..#....#..#.#. +..##.#..........#.##..#.....##. +..................##..........# +....##....###.....#..#...#.#... +.##.........#..#............... +....##..###....#.##............ +#.#...###.#..##...#...........# +.....#..#......#.....#......... +..#..##...#.....#.....#.#...... +......#....###.#..#.#.#....#..# +#...#.......#.##.....#......... +.#.#..#...#.............##..... +......#..............#.....#..# +......#......###....#...#...... +.....#.....#...#.......###..... +#..........##......##.#.#.....# +....#.......#..#......#.......# +..#...#.###...........#..#.###. +.....#...#.#...........#.#...## +........#.#.#........#.#.....#. +....##..##.#.#..#.#....#.#.##.. +..#.#.#......##.....#...#.#...# +##...#..#......#.#.#..#...#.... +....#..##...........#..#..#..#. +.#..##...#...#...##.#..#.#....# +.#.....####.#..#..#....##..#.#. +.#....#..#......#.....#.#.#.... +....#..#.....#......#.......... +..#.#..###.....#...#...#.....## +..#.#...##..#...........####... +.#.##....##.#......#.....##.#.. +#.##..#....#.###..........##... +.###...#......#.#....##........ +...................#..#.....#.. +#.#...#.#..#.....#...#..####.## +....#.##..##...##.##.....#..... +.#...#.##...........#.......##. +###..#.....##...#.........##... +.###....##...###............... +.#....#####........#.#.#.##.... +.#.#....####.##........#....... +.....#......#.................. +......###.....##......#..##.#.. +....#.#...........##.#....##.#. +...................#.#.#....... +#.#.#........#..#.......##..... +..#...#...#....#......#....##.# +#..#..............#......#....# +......#.........##............. +.....#.#....##..#.......#...... +......#.......#...........#.... +....#....#.#..##.#....#...#.... +#.#.#..#..#.#.#.#...#....#....# +.#.#....#...#.#..#......#.....# +.#...........#.#....##.....#... +........#...#....#....##.....## +#..#..........#..#..#.....#.... +#.#.###..........#.##....#...## +..#................#.##.##..... +..#...#.##...##...#.........#.. +#....#......#......#.........#. +##...#...##.#.........#......#. +.......#.....#................. +...#...#.....##.........#.#..#. +..#......#...#.......#......#.# +#.......#...#.##.#..##..#...... +.#.#............#...###..#..... +...#.......##.......#....#..#.. +.....#..#.#....#.#............. +#....#...##.##....#....##...... +........#......#.......#....#.. +..#..#..##......##.#..#.#..##.. +....##......#.##.##......#..... +........##.#...#.....#.......#. +..##.#....#..#......#.##....... +..##.####.#...#.#....#......... +.#........#.....#..#....#...#.# +###....##......#..#..#.##..#... +..........###.#..#..#....#..... +..#.........#....#.....#....#.# +.#...#.#.....##.#...#...#.#..#. +....##......##.##.#.....#..#... +....#.##...##.......#..##...... +#..........#..#....#.......#.#. +..#.....#.................#.... +..........#.#.#.....#.#....#..# +.......#..........#.##....#.... +#..#.....#.......#........#.... +#.....##..#.........##..#..#.#. +.##.#...#..........#....#...... +....#..#.#......#.##..#..#.##.. +...##.####....#.....#.#...##... +..#.#....#.#........#.......... +#...#.#.##.##....##..#...#...#. +...#.#.......#..#...#..#..##..# +.....#....#........###.....#... +.......#..#.##....#.#.....#.... +....##....#....#.......#.....#. +.........#........###...##..... +#.#..#...##.........#.#..#....# +...##...........#.........#...# +......#.#.#.........#..#.#.#... +........##.###....#..#.......#. +....#.#...#......#..#........## +.#....##....#...#.##.........#. +####.#..#...........##.#.#..... +...#....#..#.....#..##.####.#.. +.##...#...........#.#.........# +#.#..#..#...#.#.#.........#..#. +#......###............#...#.... +..#.......#....#...#...#..#...# +#.#.#...##..#...#...#.......##. +......#.#.......#..........#.#. +...............#...#..#...#.#.. +.#.#...##.####..##.##....#..##. +#..####.......##.#........#...# +......###....##...#.#..#.##.... +.##.....###..#...#.###.###..... +..#...#.....#...#..#..##..#.... +...#...##.....##........#.#.##. +.#...#..#....#....#..###....#.# +..#.#.#.#.#..........#.#..#..## +.......###..................... +##.#......#.##.....#.........#. +......................#.#.....# +#..#........##.......#..##..#.# +#.#.#.....##.#.##.##.#....##... +.#...#.....#.........#.....#... +..#.........#.##.#.###.#......# +.........#..#.##...#.......###. +.....##........#......#........ +...#.#...##...#........#.##.... +.........##............#.####.. +#....#...#...#..#....#..#.#.#.# +..#.........#......#.##........ +....#.....#........#........#.# +.##.#..#.#..#..###......###.... +#.###.....#.#.#.##........#..## +#.#..#...##.....#....#...#.#... +......#....#.....#...#......... +...#........##.......#.##..#### +..#..#....#....#..#..#...#.##.. +.##.....#............#...#..... +......#.......#.....#...#.#.#.. +.........#.....#...##.......... +.....#........##...........#... +#.#..##.#...#....#....#........ +#.##..#.#.......#...#......#... +...........#.#..#..#.....##.#.. +#....#.##.......#......#.##..#. +.....#........#.##.#...#.....#. +.....###..#.......##........... +.........#.#.#.....#.##.......# +.......#....#......#.#.....#... +##........#...#..#.#.........#. +##...........#.##...##......#.. +..#.###.#.#.#...####..#....###. +.........#...#.....##....#.#.## +.###..###.#.#.....#.##......... +#..#...#.#.................##.# +##.........#.#....#.#...#.###.. +#.#....#..............#.##.#... +...#..#....##.#..#.......#..##. +.#..#.###......##..........#..# +.##....#.#....#....#.#..#...... +.......#.....#..#....#.##...#.. +#.#.#.........###..#..#.....#.. +...##..##...##....#..#......#.. +..........#....#..........#.... +#..##..#...#......#.....#.#.... +#..##..#....#.#.#...#.......... +......##..#.........#........#. +.##..#..#......###.....#..#.... +.....#..#.##..........#.#..#... diff --git a/2020/3/solve.c b/2020/3/solve.c new file mode 100644 index 0000000..2f6312b --- /dev/null +++ b/2020/3/solve.c @@ -0,0 +1,57 @@ +#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; +} |