summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-12-03 01:33:01 -0500
committerJune McEnroe <june@causal.agency>2020-12-03 01:33:01 -0500
commit739e7ccabde0c8e18b325bb096c4b02f041793b2 (patch)
treea757dd15f8f5be3622f053f31bc048be40b6bba8
parentSolve day 3 part 1 (diff)
downloadaoc-739e7ccabde0c8e18b325bb096c4b02f041793b2.tar.gz
aoc-739e7ccabde0c8e18b325bb096c4b02f041793b2.zip
Solve day 3 part 2
-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)
+	);
 }