2
1
Fork 0
aoc2021/05/solution_2.c
2021-12-05 09:05:55 +01:00

41 lines
1.1 KiB
C

#include <stdio.h>
int main(void) {
FILE *fp = fopen("input.txt", "r");
unsigned char map[1000][1000] = {0};
unsigned x0, x1, y0, y1;
unsigned intersections = 0;
while (fscanf(fp, "%u,%u -> %u,%u", &x0, &y0, &x1, &y1) == 4) {
char incY = y0 < y1 ? 1 : -1;
char incX = x0 < x1 ? 1 : -1;
if (x0 == x1) {
for (unsigned y = y0; y != y1; y += incY) {
map[x0][y]++;
}
map[x0][y1]++;
} else if (y0 == y1) {
for (unsigned x = x0; x != x1; x += incX) {
map[x][y0]++;
}
map[x1][y0]++;
} else {
unsigned x = x0, y = y0;
while (x != x1 && y != y1) {
map[x][y]++;
x += incX;
y += incY;
}
map[x][y]++;
}
}
for (unsigned y = 0; y < 1000; y++) {
for (unsigned x = 0; x < 1000; x++) {
if (map[x][y] > 1)
intersections++;
}
}
printf("Answer: %d\n", intersections);
}