From 49d0c908f24b2c193c9deed1716fe36061ba26a1 Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Sun, 28 Nov 2021 17:58:30 +0100 Subject: Add day 13 part 1 --- 13/part1.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 13/part1.c (limited to '13/part1.c') diff --git a/13/part1.c b/13/part1.c new file mode 100644 index 0000000..b62d007 --- /dev/null +++ b/13/part1.c @@ -0,0 +1,48 @@ +#include +#include +#include +#include + +#define BUFFER_SIZE 256 +#define MAX_INPUT_LEN 128 + +int solve(const char *filename) +{ + FILE *file = fopen(filename, "r"); + + char buffer[BUFFER_SIZE] = { 0 }; + fgets(buffer, BUFFER_SIZE, file); + int depart = atoi(buffer); + fgets(buffer, BUFFER_SIZE, file); + int bus_ids[MAX_INPUT_LEN] = { 0 }; + bus_ids[0] = atoi(buffer); + int i = 1; + char *p = buffer; + while ((p = strchr(p, ','))) { + // x is never the last value, just keep looping we find a valid input + while (*++p == 'x') { + p += 1; + } + + bus_ids[i++] = atoi(p); + } + + int bus_id = 0; + int wait = INT32_MAX; + for (int j = 0; j < i; j++) { + int id = bus_ids[j]; + int tmprem = id - (depart % id); + if (tmprem < wait) { + bus_id = id; + wait = tmprem; + } + } + + fclose(file); + return bus_id * wait; +} + +int main(int argc, char *argv[]) +{ + printf("%i\n", solve(argv[argc - 1])); +} -- cgit v1.2.3