From 89c52c14c90bc32565c7cff44abd7ddb1c51bce1 Mon Sep 17 00:00:00 2001 From: kaiwu Date: Thu, 16 Feb 2023 15:14:51 +0800 Subject: 2017 day21 flip --- src/2017/day21/aoc.cpp | 1 + src/2017/day21/aoc.h | 121 ++++++++++++++++++++----------------------------- 2 files changed, 51 insertions(+), 71 deletions(-) diff --git a/src/2017/day21/aoc.cpp b/src/2017/day21/aoc.cpp index 876f1a0..ff0ae10 100644 --- a/src/2017/day21/aoc.cpp +++ b/src/2017/day21/aoc.cpp @@ -21,6 +21,7 @@ static std::string match(T t, const std::vector& rs) { for (auto& r : rs) { for (auto&& sx : t.combo()) { if (sx.to_string() == r.k) { + // printf("%s matched %s\n", s.c_str(), r.k.c_str()); return r.v; } } 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 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 rotate() const noexcept { @@ -57,13 +51,10 @@ struct square2 { } std::vector combo() const noexcept { - std::vector c{*this}; + std::vector 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 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 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 combo() const noexcept { - std::vector c{*this}; + std::vector 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; } -- cgit v1.2.3