#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)); }