From fe75c10e350743a1c078f065d69556fecf825ca5 Mon Sep 17 00:00:00 2001 From: nekineki Date: Sun, 11 Dec 2022 14:47:27 +0100 Subject: move files around, update paths --- 2022/day06.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 2022/day06.c (limited to '2022/day06.c') diff --git a/2022/day06.c b/2022/day06.c new file mode 100644 index 0000000..5e79b72 --- /dev/null +++ b/2022/day06.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include +#include "util.h" + +// char filename[] = "in/day06.ref"; +char filename[] = "in/day06.pzl"; + +#define BUF_LEN 10000 +u8 buf[BUF_LEN]; +#define NAH_LEN 26 +u8 not_a_hashmap[NAH_LEN]; + +s32 solve(u32 n) +{ + int fd = open(filename, O_RDONLY); + u32 data_len = read(fd, buf, LEN(buf)); + if (data_len == LEN(buf)) { + printf("buffer probably not big enough\n"); + exit(1); + } + + for (u32 i = n; i < data_len; ++i) { + memset(not_a_hashmap, 0x00, LEN(not_a_hashmap)); + + for (u32 j = 1; j <= n; ++j) { + u32 index = (buf[i-j]-'a'); + if (index >= NAH_LEN) { + printf("nah too small\n"); + exit(1); + } + not_a_hashmap[index] = 1; + } + + u32 sum = 0; + for (u32 j = 0; j < NAH_LEN; ++j) { + sum += not_a_hashmap[j]; + } + if (sum == n) { + return i; + } + + } + return -1; +} + +int main() +{ + printf("res1: %d\n", solve(4)); + printf("res2: %d\n", solve(14)); +} + -- cgit v1.2.3