D2P2 done

This commit is contained in:
2025-12-02 17:50:50 -06:00
parent 140dd11715
commit e6958a531d

View File

@@ -65,6 +65,34 @@ uint_fast64_t solution_part_one(std::vector<std::pair<uint_fast64_t, uint_fast64
return running_sum;
}
uint_fast64_t solution_part_two(std::vector<std::pair<uint_fast64_t, uint_fast64_t>> ranges ){
uint_fast64_t running_sum = uint_fast64_t{0};
for (std::vector<std::pair<uint_fast64_t, uint_fast64_t>>::const_iterator i =ranges.cbegin(); i<ranges.cend(); i++) {
spdlog::debug("range: {} to {}", i->first, 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<size_t>(number.size()/pieces);
std::string_view first_piece = std::string_view{&*number.cbegin(), static_cast<size_t>(substring_length)};
std::string::const_iterator start = number.cbegin();
bool invalid = {true};
for (uint_fast64_t shift = static_cast<uint_fast64_t>(substring_length); shift+substring_length<=number.size(); shift+=substring_length) {
std::string_view current = std::string_view{&*(start+static_cast<long>(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;
}