refactor utils

This commit is contained in:
2025-12-04 22:12:32 -05:00
parent 9282b3d531
commit 4b1da89690
5 changed files with 54 additions and 64 deletions

View File

@@ -1,13 +1,12 @@
#include <cassert>
#include <charconv>
#include <cmath>
#include <cstdint>
#include <ranges>
#include <string>
#include <fstream>
#include <sstream>
#include "doctest.h"
#include "utils.h"
namespace day2 {
const std::string sample =
@@ -87,9 +86,9 @@ uint64_t sum_repetitions(const Range range) {
uint64_t solve_first(std::string_view input) {
uint64_t result = 0;
for (const auto range:
std::views::split(input, ',') | std::views::transform([](auto s) {
return parse_range(std::string_view(s));
})) {
std::views::split(input, ',')
| std::views::transform(utils::to_string_view)
| std::views::transform(parse_range)) {
result += sum_repetitions(range);
}
@@ -129,9 +128,9 @@ uint64_t solve_second(std::string_view input) {
buf.reserve(100);
uint64_t result = 0;
for (const auto range:
std::views::split(input, ',') | std::views::transform([](auto s) {
return parse_range(std::string_view(s));
})) {
std::views::split(input, ',')
| std::views::transform(utils::to_string_view)
| std::views::transform(parse_range)) {
result += sum_repetitions_2(range, buf);
buf.clear();
}
@@ -152,10 +151,7 @@ TEST_CASE("Solve first sample") {
}
TEST_CASE("Solve first input") {
std::ifstream fs("day2input.txt");
std::stringstream ss{};
ss << fs.rdbuf();
CHECK(solve_first(ss.str()) == 21898734247);
CHECK(solve_first(utils::read_file("day2input.txt")) == 21898734247);
}
TEST_CASE("Find divisor works") {
@@ -184,11 +180,8 @@ TEST_CASE("Solves second sample") {
TEST_CASE(
"Solves second input"
* doctest::skip(true)
) {
std::ifstream fs("day2input.txt");
std::stringstream ss{};
ss << fs.rdbuf();
CHECK(solve_second(ss.view()) == 28915664389);
) {
CHECK(solve_second(utils::read_file("day2input.txt")) == 28915664389);
}
TEST_SUITE_END();