diff --git a/day1/c/day1.c b/day1/c/day1.c new file mode 100644 index 0000000..552f1ef --- /dev/null +++ b/day1/c/day1.c @@ -0,0 +1,47 @@ +#include +#include + +int calculate_fuel1(int mass) +{ + return mass / 3 - 2; +} + +int calculate_fuel2(int mass) +{ + int fuel = mass / 3 - 2; + if (fuel < 0) + return 0; + else + return fuel + calculate_fuel2(fuel); +} + +int main(void) +{ + FILE *fp; + char *line = NULL; + size_t len = 0; + ssize_t read; + + fp = fopen("../input", "r"); + if (fp == NULL) + exit(EXIT_FAILURE); + + int fuel1 = 0; + int fuel2 = 0; + int mass; + + while ((read = getline(&line, &len, fp)) != -1) { + mass = atoi(line); + fuel1 += calculate_fuel1(mass); + fuel2 += calculate_fuel2(mass); + } + + printf("Solution for Part One: %d\n", fuel1); + printf("Solution for Part Two: %d\n", fuel2); + + fclose(fp); + if (line) + free(line); + + return 0; +}