From fe5fd818f26fd5bc5e5738917dfc9907c51d2963 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Tue, 15 Dec 2020 18:15:15 +0100 Subject: Very inefficient solution (hashmap?) --- 2020/15/solve.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 2020/15/solve.c (limited to '2020/15/solve.c') diff --git a/2020/15/solve.c b/2020/15/solve.c new file mode 100644 index 0000000..0707208 --- /dev/null +++ b/2020/15/solve.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include + +#define MAX_NUMS 30000000 + +static int nums[MAX_NUMS] = { 0 }; + +int part_one(FILE *fp, int count) +{ + long size = 0; + while (size < count) + if (fscanf(fp, "%d,", &nums[size++]) != 1) + break; + + for (int i = size - 2; i < count - 1; i++) { + for (int j = i - 1; j >= 0; j--) { + if (nums[j] == nums[i]) { + nums[i + 1] = i - j; + break; + } + } + } + + return nums[count - 1]; +} + +int main(int argc, char *argv[]) +{ + FILE *fp = fopen("input", "r"); + if (!fp) + exit(EXIT_FAILURE); + + clock_t tic = clock(); + printf("%d\n", part_one(fp, 2020)); + memset(nums, 0, 2020); + rewind(fp); + printf("%d\n", part_one(fp, 30000000)); + clock_t toc = clock(); + printf("TIME: %f seconds\n", (double)(toc - tic) / CLOCKS_PER_SEC); + + fclose(fp); + return 0; +} -- cgit v1.2.3