From 7fb1f4f77869c2dd41756f7cfb0827763eee4c3d Mon Sep 17 00:00:00 2001 From: Pratchaya Khansomboon Date: Thu, 11 Dec 2025 13:57:49 +0100 Subject: [PATCH] 2025 day 2 p1 --- 2025/day02.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/2025/day02.cpp b/2025/day02.cpp index 5fcf0ab..01012d2 100644 --- a/2025/day02.cpp +++ b/2025/day02.cpp @@ -22,17 +22,61 @@ using namespace aoc::types; )"; static auto entry([[maybe_unused]]std::span const& args) -> void { - std::string str{raw_str}; - // auto str = aoc::read_text("./input.txt").value_or(""); + // std::string str{raw_str}; + auto str = aoc::read_text("./input.txt").value_or(""); str = aoc::trim(str); auto ids_str = str | std::views::split(","sv) | std::views::transform([](auto const& str) { - return aoc::trim({std::begin(str), std::end(str)}); + std::vector range{}; + range.resize(2); + + // std::ranges::transform( + // aoc::trim(std::string{std::begin(str), std::end(str)}) | std::views::split("-"sv), + // std::begin(range), + // [](auto const& value) { + // return aoc::trim(std::string{std::begin(value), std::end(value)}); + // }); + + std::ranges::transform( + aoc::trim(std::string{std::begin(str), std::end(str)}) | std::views::split("-"sv), + std::begin(range), + [](auto const& value) { + return u64(std::stoul(aoc::trim(std::string{std::begin(value), std::end(value)}))); + }); + + return range; }) | std::ranges::to(); + auto is_valid_id = [](u64 id) { + auto const str = fmt::format("{}", id); + if (str.size() % 2 != 0) return true; + bool is_invalid = true; + for (usize i = 0; i < str.size() / 2; ++i) { + if (str[i] != str[str.size() / 2 + i]) { + is_invalid = false; + continue; + } + } + return !is_invalid; + }; + + u64 sum = 0; + for (auto const& id : ids_str) { - std::print("{}\n", id); + u64 const start = id[0]; + u64 const end = id[1]; + + fmt::print("{} -> {}: ", id[0], id[1]); + for (u64 i = start; i <= end; ++i) { + if (!is_valid_id(i)) { + fmt::print("{}, ", i); + sum += i; + } + } + fmt::print("\n"); } + + fmt::print("res: {}\n", sum); } auto main([[maybe_unused]]int argc, [[maybe_unused]]char const* argv[]) -> int {