#include #include #include #include #include "day.h" #include "puzzle_input.h" #define DATA_MAX_LEN 2048 static void part_1(const int64_t * data, uint16_t data_len) { int64_t last_value; int16_t inc_count = 0; last_value = data[0]; for (uint16_t i = 1; i < (uint16_t)data_len; i++) { if (data[i] > last_value) { inc_count++; } last_value = data[i]; } printf("PART 1: %d values increased!\n", inc_count); } static void part_2(const int64_t * data, uint16_t data_len) { int64_t old_window_sum; int64_t window_sum; int16_t inc_count = 0; old_window_sum = data[0] + data[1] + data[2]; for (uint16_t i = 3; i < (uint16_t)data_len; i++) { window_sum = old_window_sum - data[i-3] + data[i]; if (window_sum > old_window_sum) { inc_count++; } old_window_sum = window_sum; } printf("PART 2: %d windows increased!\n", inc_count); } int day_1() { char * path = "../inputs/day_1.txt"; uint16_t data_len; int64_t data[DATA_MAX_LEN]; parse_ret_t res = read_input_single_line(path, (void *) data, DATA_MAX_LEN, parse_long_from_buff, &data_len); if (res == PARSER_OK) { part_1(data, data_len); part_2(data, data_len); } else { printf("Failed to parse data: %d\n", res); return res; } return 0; }