aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2023-02-15 09:36:13 +0800
committerkaiwu <kaiwu2004@gmail.com>2023-02-15 09:36:13 +0800
commit0c9209192c955e7c4f0804704a87998b20d06673 (patch)
tree43038024d468e7d0a7f72075299299185dd07bfc
parent5929a590f15cb0d6aeccb6940db0e2d2999a676f (diff)
downloadadvent-of-code-0c9209192c955e7c4f0804704a87998b20d06673.tar.gz
advent-of-code-0c9209192c955e7c4f0804704a87998b20d06673.zip
2017 day21 part1
-rw-r--r--src/2017/day21/aoc.cpp4
-rw-r--r--src/2017/day21/aoc.h22
2 files changed, 25 insertions, 1 deletions
diff --git a/src/2017/day21/aoc.cpp b/src/2017/day21/aoc.cpp
index b1f315a..c077b32 100644
--- a/src/2017/day21/aoc.cpp
+++ b/src/2017/day21/aoc.cpp
@@ -5,15 +5,17 @@ namespace aoc2017 {
typedef void (*sfunc)(std::vector<square3>* vs3, std::vector<square2>* vs2,
const std::map<std::string, std::string>& rs);
+
void s3tos2(std::vector<square3>* vs3, std::vector<square2>* vs2, const std::map<std::string, std::string>& rs) {}
void s2tos3(std::vector<square3>* vs3, std::vector<square2>* vs2, const std::map<std::string, std::string>& rs) {}
static void part1(int t, int times, std::vector<square3>* vs3, std::vector<square2>* vs2,
const std::map<std::string, std::string>& rs) {
sfunc fs[2] = {s3tos2, s2tos3};
- if (t <= times) {
+ while (t <= times) {
sfunc f = fs[t % 2];
f(vs3, vs2, rs);
+ t++;
}
}
diff --git a/src/2017/day21/aoc.h b/src/2017/day21/aoc.h
index c2bae44..1f743c2 100644
--- a/src/2017/day21/aoc.h
+++ b/src/2017/day21/aoc.h
@@ -56,6 +56,17 @@ struct square2 {
return {s0, s1, s2};
}
+ std::vector<square2> combo() const noexcept {
+ std::vector<square2> c{*this};
+ for (auto&& s : rotate()) {
+ c.emplace_back(s);
+ }
+ for (auto&& s : flip()) {
+ c.emplace_back(s);
+ }
+ return c;
+ }
+
std::string to_string() {
char sx[6] = {0};
sprintf(sx, "%c%c/%c%c", s[0], s[1], s[2], s[3]);
@@ -200,6 +211,17 @@ struct square3 {
return {s0, s1, s2, s3, s4, s5, s6};
}
+ std::vector<square3> combo() const noexcept {
+ std::vector<square3> c{*this};
+ for (auto&& s : rotate()) {
+ c.emplace_back(s);
+ }
+ for (auto&& s : flip()) {
+ c.emplace_back(s);
+ }
+ return c;
+ }
+
std::string to_string() {
char sx[12] = {0};
sprintf(sx, "%c%c%c/%c%c%c/%c%c%c", s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8]);