refactor utils
This commit is contained in:
27
day2.cpp
27
day2.cpp
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user