diff options
author | June McEnroe <june@causal.agency> | 2020-12-03 01:33:01 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-12-03 01:33:01 -0500 |
commit | d896a7be22966749e74a279657ee1a7dfa127e98 (patch) | |
tree | 9275f99fb725c1f8377512d224679f3ed9804184 | |
parent | Solve day 3 part 1 (diff) | |
download | aoc-d896a7be22966749e74a279657ee1a7dfa127e98.tar.gz aoc-d896a7be22966749e74a279657ee1a7dfa127e98.zip |
Solve day 3 part 2
-rw-r--r-- | 2020/day03.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/2020/day03.c b/2020/day03.c index cd792a7..f647681 100644 --- a/2020/day03.c +++ b/2020/day03.c @@ -1,16 +1,23 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +static char grid[512][32]; +static int h, w; +static long trees(int dx, int dy) { + long trees = 0; + for (int x = 0, y = 0; y < h; x += dx, y += dy) { + trees += grid[y][x%w] == '#'; + } + return trees; +} int main(void) { - char grid[512][32]; - int h = 0; while (EOF != scanf("%s\n", grid[h])) { h++; } - int w = strlen(grid[0]); - int trees = 0; - for (int x = 0, y = 0; y < h; x += 3, y += 1) { - trees += grid[y][x%w] == '#'; - } - printf("%d\n", trees); + w = strlen(grid[0]); + printf("%ld\n", trees(3, 1)); + printf( + "%ld\n", + trees(1, 1) * trees(3, 1) * trees(5, 1) * trees(7, 1) * trees(1, 2) + ); } |