From c871af97010f5dd5b0ce69cd686ccbc178581c50 Mon Sep 17 00:00:00 2001 From: s-prechtl Date: Sun, 1 Dec 2024 07:59:59 +0100 Subject: [PATCH] feat: Day1_2 --- 2024/Day1/src/main.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/2024/Day1/src/main.c b/2024/Day1/src/main.c index f8aec38..4457692 100644 --- a/2024/Day1/src/main.c +++ b/2024/Day1/src/main.c @@ -17,6 +17,7 @@ int main() { int *first_numbers = malloc(lines * sizeof(int)); int *second_numbers = malloc(lines * sizeof(int)); int current_position = 0; + int count = 0; int sum = 0; file = fopen(filename, "r"); @@ -34,9 +35,9 @@ int main() { current_number_string[strlen(current_number_string) - 1] = '\0'; } if (is_first) { - first_numbers[current_position] = atoi(current_number_string); + first_numbers[current_position] = atoi(current_number_string); } else { - second_numbers[current_position] = atoi(current_number_string); + second_numbers[current_position] = atoi(current_number_string); } is_first ^= 1; if (line) { @@ -47,10 +48,17 @@ int main() { } qsort(first_numbers, lines, sizeof(int), compare_ints); qsort(second_numbers, lines, sizeof(int), compare_ints); - + for (int i = 0; i < lines; i++) { - int difference = abs(first_numbers[i] - second_numbers[i]); - sum += difference; + for (int j = 0; j < lines; j++) { + if (first_numbers[i] == second_numbers[j]) { + count++; + } else if (count != 0) { + sum += first_numbers[i] * count; + count = 0; + break; + } + } } printf("%d\n", sum); @@ -80,5 +88,5 @@ int count_lines(char *filename) { } int compare_ints(const void *a, const void *b) { - return (*(int *)a - *(int *)b); + return (*(int *)a - *(int *)b); }