summary refs log tree commit diff homepage
path: root/2021
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2021-12-05 11:37:53 -0500
committerJune McEnroe <june@causal.agency>2021-12-05 11:37:53 -0500
commit9e4caca9ecc7639e64fc6f669a6d3bf7aefe8c33 (patch)
tree258d3f86b7063c2336509e0562fc855d6c9b8fb5 /2021
parentSolve day 4 part 2 (diff)
downloadaoc-9e4caca9ecc7639e64fc6f669a6d3bf7aefe8c33.tar.gz
aoc-9e4caca9ecc7639e64fc6f669a6d3bf7aefe8c33.zip
Solve day 5 part 1
Diffstat (limited to '2021')
-rw-r--r--2021/day05.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/2021/day05.c b/2021/day05.c
new file mode 100644
index 0000000..a51bfc0
--- /dev/null
+++ b/2021/day05.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <stdlib.h>
+static void swap(int *x1, int *y1, int *x2, int *y2) {
+	int t = *x1;
+	*x1 = *x2;
+	*x2 = t;
+	t = *y1;
+	*y1 = *y2;
+	*y2 = t;
+}
+int main(void) {
+	static int grid[1024][1024];
+	int x1, y1, x2, y2;
+	while (4 == scanf("%d,%d -> %d,%d\n", &x1, &y1, &x2, &y2)) {
+		if (x1 != x2 && y1 != y2) continue;
+		if (x2 < x1 || y2 < y1) swap(&x1, &y1, &x2, &y2);
+		for (int y = y1; y <= y2; ++y)
+		for (int x = x1; x <= x2; ++x) {
+			grid[y][x]++;
+		}
+	}
+	int points = 0;
+	for (int y = 0; y < 1024; ++y)
+	for (int x = 0; x < 1024; ++x) {
+		if (grid[y][x] > 1) points++;
+	}
+	printf("%d\n", points);
+}