From 4998077a4850d216fa9fa349db9c1f3c12bf0d84 Mon Sep 17 00:00:00 2001 From: Bill Rossi Date: Sun, 1 Dec 2024 00:13:20 -0500 Subject: [PATCH] C 2024 day 1 --- c/2024/1/historian_hysteria.c | 50 +++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 c/2024/1/historian_hysteria.c diff --git a/c/2024/1/historian_hysteria.c b/c/2024/1/historian_hysteria.c new file mode 100644 index 0000000..b1bdc25 --- /dev/null +++ b/c/2024/1/historian_hysteria.c @@ -0,0 +1,50 @@ +#include +#include +#include + +#include "../../lib/aoc.h" + +int sort(const void *a, const void *b) { + return *(int*) a - *(int*) b; +} + +int main() { + char *line; + + int left[1000]; + int right[1000]; + int index = 0; + + while ((line = aoc_read_line()) != NULL) { + int l, r; + sscanf(line, "%d %d", &l, &r); + left[index] = l; + right[index] = r; + index++; + } + + qsort(left, 1000, sizeof(int), sort); + qsort(right, 1000, sizeof(int), sort); + + int sum = 0; + + for (int i = 0; i < 1000; i++) { + sum += abs(left[i] - right[i]); + } + + printf("Part 1: %d\n", sum); + + int similarity_score = 0; + for (int i = 0; i < 1000; i++) { + int right_count = 0; + for (int j = 0; j < 1000; j++) { + if (left[i] == right[j]) right_count++; + } + similarity_score += (left[i] * right_count); + } + + printf("Part 2: %d\n", similarity_score); + + aoc_free(); + return 0; +}