#include #include #include #include #include #include "input.h" #define INPUT "input/06.txt" #define EXPECTED1 1598L #define EXPECTED2 2414L void find_marker(char* input, size_t marker_size, size_t expected) { size_t pos; size_t pos_max = strlen(input); if(marker_size >= pos_max) { err(2, "input is too short"); return; } size_t marker_size_loop = marker_size - 1; for(pos = marker_size_loop; pos < pos_max; pos++) { bool is_marker = true; for(size_t i = pos; i > pos-marker_size_loop; i--) { for(size_t j = i-1; j >= pos-marker_size_loop; j--) { is_marker &= input[i] != input[j]; if(!is_marker) break; } if(!is_marker) break; } if(is_marker) break; } pos++; CHECK(pos, expected) } int main() { // read input struct input_str input; input_str_read(&input, INPUT); // do stuff find_marker(input.lines[0], 4, EXPECTED1); find_marker(input.lines[0], 14, EXPECTED2); // cleanup & exit input_str_free(&input); return 0; }