diff options
-rw-r--r-- | 2021/day05.c | 28 |
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); +} |