From 0e3c31c0de15ed48aa6031df39cf92e5076c679e Mon Sep 17 00:00:00 2001 From: dobiadi <50926840+dobiadi@users.noreply.github.com> Date: Fri, 8 Dec 2023 22:06:39 +0100 Subject: [PATCH] Day6 C --- day6/c/day6 | Bin 0 -> 16384 bytes day6/c/day6.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ day6/input.txt | 2 ++ day6/input2.txt | 2 ++ day6/sample.txt | 2 ++ 5 files changed, 72 insertions(+) create mode 100755 day6/c/day6 create mode 100644 day6/c/day6.c create mode 100644 day6/input.txt create mode 100644 day6/input2.txt create mode 100644 day6/sample.txt diff --git a/day6/c/day6 b/day6/c/day6 new file mode 100755 index 0000000000000000000000000000000000000000..b6d44d2eb91928e3065f6b82cbd075228354ae61 GIT binary patch literal 16384 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 J4hM%Q{s~$Tu{i($ literal 0 HcmV?d00001 diff --git a/day6/c/day6.c b/day6/c/day6.c new file mode 100644 index 0000000..891e7ea --- /dev/null +++ b/day6/c/day6.c @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +#define LINE_MAX_LENGTH 256 +#define MAX_TIMES 16 +#define NUM_0_CHARCODE 48 +#define NUM_9_CHARCODE NUM_0_CHARCODE + 9 + +int score(int max_duration, int hold_duration); + +int main() { + char *p, *buf, c; + + buf = (char *)malloc(LINE_MAX_LENGTH); + memset(buf, 0, LINE_MAX_LENGTH); + p = buf; + + unsigned long first = 1; + unsigned long times[MAX_TIMES], times_num = 0; + unsigned long records[MAX_TIMES], records_num = 0; + + while ((c = getchar()) != EOF) { + *p++ = c; + if (c == '\n') { + p = buf; + while (*p != '\n') { + while (*p < NUM_0_CHARCODE || *p > NUM_9_CHARCODE) p++; + + if (first) { + sscanf(p, "%lu", ×[times_num]); + times_num++; + } else { + sscanf(p, "%lu", &records[records_num]); + records_num++; + } + + while (*p >= NUM_0_CHARCODE && *p <= NUM_9_CHARCODE) p++; + } + + if (first) { + first = 0; + } + memset(buf, 0, LINE_MAX_LENGTH); + p = buf; + } + } + + // Part 1 + unsigned long part1 = 1; + for (unsigned long i = 0; i < times_num; i++) { + // quick mafs + unsigned long min_d = (unsigned long)ceil((times[i] - sqrt(times[i] * times[i] - 4 * (records[i]+1))) / 2); + unsigned long max_d = (unsigned long)floor((times[i] + sqrt(times[i] * times[i] - 4 * (records[i]+1))) / 2); + part1 *= (max_d - min_d + 1); + } + + printf("%lu\n", part1); + + free(buf); +} + +int score(int max_duration, int hold_duration) { + return hold_duration * (max_duration - hold_duration); +} diff --git a/day6/input.txt b/day6/input.txt new file mode 100644 index 0000000..52c7359 --- /dev/null +++ b/day6/input.txt @@ -0,0 +1,2 @@ +Time: 41 66 72 66 +Distance: 244 1047 1228 1040 diff --git a/day6/input2.txt b/day6/input2.txt new file mode 100644 index 0000000..2719a83 --- /dev/null +++ b/day6/input2.txt @@ -0,0 +1,2 @@ +Time: 41667266 +Distance: 244104712281040 diff --git a/day6/sample.txt b/day6/sample.txt new file mode 100644 index 0000000..28f5ae9 --- /dev/null +++ b/day6/sample.txt @@ -0,0 +1,2 @@ +Time: 7 15 30 +Distance: 9 40 200