diff options
author | kaiwu <kaiwu2004@gmail.com> | 2023-01-18 21:12:16 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2023-01-18 21:12:16 +0800 |
commit | b629d6ebdf1f36d9b62a1f251bad2ffa2855d4c5 (patch) | |
tree | ae0d41b783ceaf51e0062e41f01029a4f210b7b5 | |
parent | ffc2bf366884b7b7c23628da2bf8c9550ba542b0 (diff) | |
download | advent-of-code-b629d6ebdf1f36d9b62a1f251bad2ffa2855d4c5.tar.gz advent-of-code-b629d6ebdf1f36d9b62a1f251bad2ffa2855d4c5.zip |
2022 day25 done better
-rw-r--r-- | src/2022/day25/aoc.cpp | 23 | ||||
-rw-r--r-- | src/2022/day25/aoc.h | 2 | ||||
-rw-r--r-- | test/test_2022.cpp | 2 |
3 files changed, 13 insertions, 14 deletions
diff --git a/src/2022/day25/aoc.cpp b/src/2022/day25/aoc.cpp index 858f5a1..f15075e 100644 --- a/src/2022/day25/aoc.cpp +++ b/src/2022/day25/aoc.cpp @@ -8,7 +8,7 @@ static int64_t pow(size_t n) { for (size_t i = 0; i < n; i++) { x *= 5; } - return n == 0 ? 0 : x; + return x; } int64_t pow5(size_t n) { @@ -69,12 +69,12 @@ snafu_digit range(size_t n) { int64_t l = m1; for (size_t i = n; i > 0; i--) { - l -= 2 * (i > 1 ? pow5(i - 1) : 1); + l -= 2 * pow5(i - 1); } int64_t h = m2; for (size_t i = n; i > 0; i--) { - h += 2 * (i > 1 ? pow5(i - 1) : 1); + h += 2 * pow5(i - 1); } p.first->second = {l, m1, d1, d2, m2, h}; } @@ -123,22 +123,21 @@ std::string baseSNAFU(int64_t x) { return s; } -std::pair<int64_t, int64_t> day25(line_view file) { +std::pair<std::string, int64_t> day25(line_view file) { std::vector<snafu> ss; per_line(file, [&ss](line_view lv) { ss.emplace_back(lv); return true; }); - // int64_t x{0}; - // for (auto& s : ss) { - // // s.print(); - // // printf(" %ld\n", base10(s)); - // x += base10(s); - // } + int64_t x{0}; + for (auto& s : ss) { + // s.print(); + // printf(" %ld\n", base10(s)); + x += base10(s); + } // printf("%ld %s\n", x, baseSNAFU(x).c_str()); - - return {0, 0}; + return {baseSNAFU(x), 0}; } } // namespace aoc2022 diff --git a/src/2022/day25/aoc.h b/src/2022/day25/aoc.h index e24291a..06f1f06 100644 --- a/src/2022/day25/aoc.h +++ b/src/2022/day25/aoc.h @@ -21,5 +21,5 @@ struct snafu { } }; -std::pair<int64_t, int64_t> day25(line_view); +std::pair<std::string, int64_t> day25(line_view); } // namespace aoc2022 diff --git a/test/test_2022.cpp b/test/test_2022.cpp index b8c8ab1..b2dee0e 100644 --- a/test/test_2022.cpp +++ b/test/test_2022.cpp @@ -200,6 +200,6 @@ TEST_CASE("Unstable Diffusion", "[2022]") { TEST_CASE("Full of Hot Air", "[2022]") { line_view lv = load_file("../src/2022/day25/input"); auto p = aoc2022::day25(lv); - REQUIRE(0 == p.first); + REQUIRE("20-1-0=-2=-2220=0011" == p.first); REQUIRE(0 == p.second); } |