diff options
-rw-r--r-- | src/2017/day21/aoc.h | 76 |
1 files changed, 75 insertions, 1 deletions
diff --git a/src/2017/day21/aoc.h b/src/2017/day21/aoc.h index c41c88a..fe2fc56 100644 --- a/src/2017/day21/aoc.h +++ b/src/2017/day21/aoc.h @@ -3,5 +3,79 @@ #include <vector> namespace aoc2017 { + +struct square2 { + char s[4] = {0}; + + // ../.. + square2(const std::string& ss) { + s[0] = *ss.data(); + s[1] = *(ss.data() + 1); + s[2] = *(ss.data() + 3); + s[3] = *(ss.data() + 4); + } + std::vector<square2> flip() { return {}; } + std::vector<square2> rotate() { return {}; } + std::string to_string() { + char sx[6] = {0}; + sprintf(sx, "%c%c/%c%c", s[0], s[1], s[2], s[3]); + return sx; + } +}; + +struct square3 { + char s[9] = {0}; + + // .../.../... + square3(const std::string& ss) { + s[0] = *ss.data(); + s[1] = *(ss.data() + 1); + s[2] = *(ss.data() + 2); + + s[3] = *(ss.data() + 4); + s[4] = *(ss.data() + 5); + s[5] = *(ss.data() + 6); + + s[6] = *(ss.data() + 8); + s[7] = *(ss.data() + 9); + s[8] = *(ss.data() + 10); + } + std::vector<square3> flip() { return {}; } + std::vector<square3> rotate() { return {}; } + 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]); + return sx; + } +}; + +struct square4 { + char s[16] = {0}; + + // ##../#.../..../..#. + square4(const std::string& ss) { + s[0] = *ss.data(); + s[1] = *(ss.data() + 1); + s[2] = *(ss.data() + 2); + s[3] = *(ss.data() + 3); + + s[4] = *(ss.data() + 5); + s[5] = *(ss.data() + 6); + s[6] = *(ss.data() + 7); + s[7] = *(ss.data() + 8); + + s[8] = *(ss.data() + 10); + s[9] = *(ss.data() + 11); + s[10] = *(ss.data() + 12); + s[11] = *(ss.data() + 13); + + s[12] = *(ss.data() + 15); + s[13] = *(ss.data() + 16); + s[14] = *(ss.data() + 17); + s[15] = *(ss.data() + 18); + } + std::vector<square2> partition() { return {}; } +}; + std::pair<int64_t, int64_t> day21(line_view); -} +} // namespace aoc2017 |