aboutsummaryrefslogtreecommitdiff
path: root/src/2017/day21/aoc.h
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2023-02-16 15:14:51 +0800
committerkaiwu <kaiwu2004@gmail.com>2023-02-16 15:14:51 +0800
commit89c52c14c90bc32565c7cff44abd7ddb1c51bce1 (patch)
treefc0b573f667311128f49ab092abd2fbfe92cbe87 /src/2017/day21/aoc.h
parentc8529be0622c31ff6a88d10e0bf73a39163af1fa (diff)
downloadadvent-of-code-89c52c14c90bc32565c7cff44abd7ddb1c51bce1.tar.gz
advent-of-code-89c52c14c90bc32565c7cff44abd7ddb1c51bce1.zip
2017 day21 flip
Diffstat (limited to 'src/2017/day21/aoc.h')
-rw-r--r--src/2017/day21/aoc.h121
1 files changed, 50 insertions, 71 deletions
diff --git a/src/2017/day21/aoc.h b/src/2017/day21/aoc.h
index 1f743c2..1381fb9 100644
--- a/src/2017/day21/aoc.h
+++ b/src/2017/day21/aoc.h
@@ -18,20 +18,14 @@ struct square2 {
square2() {}
- std::vector<square2> flip() const noexcept {
+ square2 flip() const noexcept {
square2 s0;
s0.s[0] = s[1];
s0.s[1] = s[0];
s0.s[2] = s[3];
s0.s[3] = s[2];
- square2 s1;
- s1.s[0] = s[2];
- s1.s[1] = s[3];
- s1.s[2] = s[0];
- s1.s[3] = s[1];
-
- return {s0, s1};
+ return s0;
}
std::vector<square2> rotate() const noexcept {
@@ -57,13 +51,10 @@ struct square2 {
}
std::vector<square2> combo() const noexcept {
- std::vector<square2> c{*this};
+ std::vector<square2> c{*this, flip()};
for (auto&& s : rotate()) {
c.emplace_back(s);
}
- for (auto&& s : flip()) {
- c.emplace_back(s);
- }
return c;
}
@@ -104,7 +95,7 @@ struct square3 {
}
square3() {}
- std::vector<square3> flip() const noexcept {
+ square3 flip() const noexcept {
square3 s0;
s0.s[0] = s[2];
s0.s[1] = s[1];
@@ -116,31 +107,20 @@ struct square3 {
s0.s[7] = s[7];
s0.s[8] = s[6];
- square3 s1;
- s1.s[0] = s[6];
- s1.s[6] = s[0];
- s1.s[3] = s[3];
- s1.s[1] = s[7];
- s1.s[7] = s[1];
- s1.s[4] = s[4];
- s1.s[2] = s[8];
- s1.s[8] = s[2];
- s1.s[5] = s[5];
-
- return {s0, s1};
+ return s0;
}
std::vector<square3> rotate() const noexcept {
- square3 s0;
- s0.s[0] = s[3];
- s0.s[1] = s[0];
- s0.s[2] = s[1];
- s0.s[3] = s[6];
- s0.s[4] = s[4];
- s0.s[5] = s[2];
- s0.s[6] = s[7];
- s0.s[7] = s[8];
- s0.s[8] = s[5];
+ // square3 s0;
+ // s0.s[0] = s[3];
+ // s0.s[1] = s[0];
+ // s0.s[2] = s[1];
+ // s0.s[3] = s[6];
+ // s0.s[4] = s[4];
+ // s0.s[5] = s[2];
+ // s0.s[6] = s[7];
+ // s0.s[7] = s[8];
+ // s0.s[8] = s[5];
square3 s1;
s1.s[0] = s[6];
@@ -153,16 +133,16 @@ struct square3 {
s1.s[7] = s[5];
s1.s[8] = s[2];
- square3 s2;
- s2.s[0] = s[7];
- s2.s[1] = s[6];
- s2.s[2] = s[3];
- s2.s[3] = s[8];
- s2.s[4] = s[4];
- s2.s[5] = s[0];
- s2.s[6] = s[5];
- s2.s[7] = s[2];
- s2.s[8] = s[1];
+ // square3 s2;
+ // s2.s[0] = s[7];
+ // s2.s[1] = s[6];
+ // s2.s[2] = s[3];
+ // s2.s[3] = s[8];
+ // s2.s[4] = s[4];
+ // s2.s[5] = s[0];
+ // s2.s[6] = s[5];
+ // s2.s[7] = s[2];
+ // s2.s[8] = s[1];
square3 s3;
s3.s[0] = s[8];
@@ -175,16 +155,16 @@ struct square3 {
s3.s[7] = s[1];
s3.s[8] = s[0];
- square3 s4;
- s4.s[0] = s[5];
- s4.s[1] = s[8];
- s4.s[2] = s[7];
- s4.s[3] = s[2];
- s4.s[4] = s[4];
- s4.s[5] = s[6];
- s4.s[6] = s[1];
- s4.s[7] = s[0];
- s4.s[8] = s[3];
+ // square3 s4;
+ // s4.s[0] = s[5];
+ // s4.s[1] = s[8];
+ // s4.s[2] = s[7];
+ // s4.s[3] = s[2];
+ // s4.s[4] = s[4];
+ // s4.s[5] = s[6];
+ // s4.s[6] = s[1];
+ // s4.s[7] = s[0];
+ // s4.s[8] = s[3];
square3 s5;
s5.s[0] = s[2];
@@ -197,27 +177,26 @@ struct square3 {
s5.s[7] = s[3];
s5.s[8] = s[6];
- square3 s6;
- s6.s[0] = s[1];
- s6.s[1] = s[2];
- s6.s[2] = s[5];
- s6.s[3] = s[0];
- s6.s[4] = s[4];
- s6.s[5] = s[8];
- s6.s[6] = s[3];
- s6.s[7] = s[6];
- s6.s[8] = s[7];
-
- return {s0, s1, s2, s3, s4, s5, s6};
+ // square3 s6;
+ // s6.s[0] = s[1];
+ // s6.s[1] = s[2];
+ // s6.s[2] = s[5];
+ // s6.s[3] = s[0];
+ // s6.s[4] = s[4];
+ // s6.s[5] = s[8];
+ // s6.s[6] = s[3];
+ // s6.s[7] = s[6];
+ // s6.s[8] = s[7];
+
+ return {s1, s3, s5};
+ // return {s0, s1, s2, s3, s4, s5, s6};
}
std::vector<square3> combo() const noexcept {
- std::vector<square3> c{*this};
+ std::vector<square3> c{*this, flip()};
for (auto&& s : rotate()) {
c.emplace_back(s);
- }
- for (auto&& s : flip()) {
- c.emplace_back(s);
+ c.emplace_back(s.flip());
}
return c;
}