diff options
Diffstat (limited to '2020/day03.c')
-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) + ); } |