diff --git a/c/2022/4/camp_cleanup.c b/c/2022/4/camp_cleanup.c new file mode 100644 index 0000000..ebc35bb --- /dev/null +++ b/c/2022/4/camp_cleanup.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include + +#include "../../lib/aoc.h" + +bool fully_contain(char *line) { + int a, b, c, d; + int y = sscanf(line, "%d-%d,%d-%d", &a, &b, &c, &d); + return ((a <= c && b >= d) || + (c <= a && d >= b)); +} + +bool overlap(char *line) { + int a, b, c, d; + int y = sscanf(line, "%d-%d,%d-%d", &a, &b, &c, &d); + return ((a <= c && b >= c) || + (a <= d && b >= d) || + (c <= a && d >= a) || + (c <= b && d >= b)); +} + +int main() { + char *line; + + int contain_sum = 0; + int overlap_sum = 0; + while ((line = aoc_read_line()) != NULL) { + if (fully_contain(line)) contain_sum++; + if (overlap(line)) overlap_sum++; + } + + printf("Part 1: %d\n", contain_sum); + printf("Part 2: %d\n", overlap_sum); + + aoc_free(); + return 0; +}