diff --git a/c/2022/1/problem.c b/c/2022/1/problem.c new file mode 100644 index 0000000..81deadf --- /dev/null +++ b/c/2022/1/problem.c @@ -0,0 +1,61 @@ +#include +#include +#include + +#include "../../lib/aoc.h" + +int main() { + char *input = aoc_read_input(); + char *seek = input; + + int current_cals = 0; + int current_elf = 0; + int max_elf = 0; + int second_max_elf = 0; + int third_max_elf = 0; + + while (seek != NULL) { + char *double_line_break = strstr(seek, "\n\n"); + if (double_line_break == NULL) { + seek = NULL; + } else { + *double_line_break = '\0'; + char *line = strtok(seek, "\n"); + while (line != NULL) { + current_cals = atoi(line); + current_elf += current_cals; + line = strtok(NULL, "\n"); + } + + if (current_elf > max_elf) { + int z = current_elf; + current_elf = max_elf; + max_elf = z; + } + + if (current_elf > second_max_elf) { + int z = current_elf; + current_elf = second_max_elf; + second_max_elf = z; + } + + if (current_elf > third_max_elf) { + int z = current_elf; + current_elf = third_max_elf; + third_max_elf = z; + } + + current_elf = 0; + + seek = double_line_break + 1; + *seek = '\0'; + seek = seek + 1; + } + } + + printf("Part 1: %d\n", max_elf); + printf("Part 2: %d\n", max_elf + second_max_elf + third_max_elf); + + free(input); + return 0; +} diff --git a/c/bin/run b/c/bin/run index ef8233d..015441b 100755 --- a/c/bin/run +++ b/c/bin/run @@ -3,5 +3,5 @@ year=$1 day=$2 -gcc -o $year/$day/problem $year/$day/problem.c +gcc -o $year/$day/problem $year/$day/problem.c -lm time (cat ../data/$year/$day/input.txt | ./$year/$day/problem)