aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2023-01-18 21:12:16 +0800
committerkaiwu <kaiwu2004@gmail.com>2023-01-18 21:12:16 +0800
commitb629d6ebdf1f36d9b62a1f251bad2ffa2855d4c5 (patch)
treeae0d41b783ceaf51e0062e41f01029a4f210b7b5
parentffc2bf366884b7b7c23628da2bf8c9550ba542b0 (diff)
downloadadvent-of-code-b629d6ebdf1f36d9b62a1f251bad2ffa2855d4c5.tar.gz
advent-of-code-b629d6ebdf1f36d9b62a1f251bad2ffa2855d4c5.zip
2022 day25 done better
-rw-r--r--src/2022/day25/aoc.cpp23
-rw-r--r--src/2022/day25/aoc.h2
-rw-r--r--test/test_2022.cpp2
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);
}