diff options
Diffstat (limited to 'src/2017/day21/aoc.h')
-rw-r--r-- | src/2017/day21/aoc.h | 40 |
1 files changed, 8 insertions, 32 deletions
diff --git a/src/2017/day21/aoc.h b/src/2017/day21/aoc.h index 1f743c2..4b2c464 100644 --- a/src/2017/day21/aoc.h +++ b/src/2017/day21/aoc.h @@ -20,18 +20,11 @@ struct square2 { std::vector<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]; + for (int i = 0; i < 4; i++) { + s0.s[i] = s[i] == '#' ? '.' : '#'; + } - return {s0, s1}; + return {s0}; } std::vector<square2> rotate() const noexcept { @@ -106,28 +99,11 @@ struct square3 { std::vector<square3> flip() const noexcept { square3 s0; - s0.s[0] = s[2]; - s0.s[1] = s[1]; - s0.s[2] = s[0]; - s0.s[3] = s[5]; - s0.s[4] = s[4]; - s0.s[5] = s[3]; - s0.s[6] = s[8]; - 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]; + for (int i = 0; i < 9; i++) { + s0.s[i] = s[i] == '#' ? '.' : '#'; + } - return {s0, s1}; + return {s0}; } std::vector<square3> rotate() const noexcept { |