diff --git a/src/day-2-solution.cpp b/src/day-2-solution.cpp index b95b51a..d5034be 100644 --- a/src/day-2-solution.cpp +++ b/src/day-2-solution.cpp @@ -65,6 +65,34 @@ uint_fast64_t solution_part_one(std::vector> ranges ){ + uint_fast64_t running_sum = uint_fast64_t{0}; + for (std::vector>::const_iterator i =ranges.cbegin(); ifirst, i->second); + for (uint_fast64_t j = i->first; j<= i->second; j++) { + std::string number = fmt::format("{}",j); + for (uint_fast64_t pieces = {2}; pieces<=number.size(); pieces++) { + if(number.size()%pieces !=0) continue; + size_t substring_length = static_cast(number.size()/pieces); + std::string_view first_piece = std::string_view{&*number.cbegin(), static_cast(substring_length)}; + std::string::const_iterator start = number.cbegin(); + bool invalid = {true}; + for (uint_fast64_t shift = static_cast(substring_length); shift+substring_length<=number.size(); shift+=substring_length) { + + std::string_view current = std::string_view{&*(start+static_cast(shift)),substring_length}; + if(current!=first_piece){ + invalid = {false}; break; + } + } + if(!invalid)continue; + running_sum+=j; + break; + } + } + } + return running_sum; +} + int main (int argc, char *argv[]) { spdlog::set_level(spdlog::level::level_enum::debug); @@ -85,6 +113,7 @@ int main (int argc, char *argv[]) { uint_fast64_t first_part_response = solution_part_one(ranges); spdlog::info("Solution to part one: {}", first_part_response); - + uint_fast64_t second_part_response = solution_part_two(ranges); + spdlog::info("Solution to part two: {}", second_part_response); return 0; }