summary refs log tree commit diff homepage
path: root/2020
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2020/day03.c23
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)
+	);
 }