From 04e8802dac6616a1158faa47004dd1668a7511c1 Mon Sep 17 00:00:00 2001 From: s-prechtl Date: Sun, 1 Dec 2024 07:53:09 +0100 Subject: [PATCH] feat: day1_1 --- 2024/Day1/src/main.c | 85 +++++++++++++++++++++++++++++++++++++++++-- 2024/Day1/test | Bin 0 -> 19648 bytes 2 files changed, 82 insertions(+), 3 deletions(-) create mode 100755 2024/Day1/test diff --git a/2024/Day1/src/main.c b/2024/Day1/src/main.c index a05ff1a..f8aec38 100644 --- a/2024/Day1/src/main.c +++ b/2024/Day1/src/main.c @@ -1,5 +1,84 @@ #include -int main(void) { - printf("TEST"); - return 0; +#include +#include + +#define BUFFER_SIZE 256 + +int count_lines(char *filename); +int compare_ints(const void *a, const void *b); + +int main() { + FILE *file; + char filename[] = "input.txt"; + char *buffer = malloc(BUFFER_SIZE); + char *saveptr; + char *current_number_string; + const int lines = count_lines(filename); + int *first_numbers = malloc(lines * sizeof(int)); + int *second_numbers = malloc(lines * sizeof(int)); + int current_position = 0; + int sum = 0; + + file = fopen(filename, "r"); + + if (file == NULL) { + perror("Error opening file"); + return 1; + } + + while (fgets(buffer, BUFFER_SIZE, file) != NULL) { + char *line = buffer; + int is_first = 1; + while ((current_number_string = strtok_r(line, " ", &saveptr))) { + if (current_number_string[strlen(current_number_string) - 1] == '\n') { + current_number_string[strlen(current_number_string) - 1] = '\0'; + } + if (is_first) { + first_numbers[current_position] = atoi(current_number_string); + } else { + second_numbers[current_position] = atoi(current_number_string); + } + is_first ^= 1; + if (line) { + line = NULL; + } + } + current_position++; + } + 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; + } + + printf("%d\n", sum); + fclose(file); + + return 0; +} + +int count_lines(char *filename) { + char c; + int lines = 0; + FILE *file = fopen(filename, "r"); + + if (!file) { + return 0; + } + + while (!feof(file)) { + c = fgetc(file); + if (c == '\n') { + lines++; + } + } + + fclose(file); + return lines; +} + +int compare_ints(const void *a, const void *b) { + return (*(int *)a - *(int *)b); } diff --git a/2024/Day1/test b/2024/Day1/test new file mode 100755 index 0000000000000000000000000000000000000000..5b3189dc8757261d7451c9689acc9fdd0818bdf5 GIT binary patch literal 19648 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 o