diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-04-04 20:56:01 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-04-04 20:56:01 +0800 |
commit | c5af45b0a6985aae151783ce27b752b885bd6c06 (patch) | |
tree | 0fc4deda1a59653f6e9dcb3c365a4f627ab67e9e /src | |
parent | 1078cd54eb79b30fa4614e303cb8df78d2439e31 (diff) | |
download | advent-of-code-c5af45b0a6985aae151783ce27b752b885bd6c06.tar.gz advent-of-code-c5af45b0a6985aae151783ce27b752b885bd6c06.zip |
2016 day2 part1
Diffstat (limited to 'src')
-rw-r--r-- | src/2016/day2/aoc.cpp | 13 | ||||
-rw-r--r-- | src/2016/day2/aoc.h | 40 | ||||
-rw-r--r-- | src/2020/day2/aoc.h | 2 |
3 files changed, 52 insertions, 3 deletions
diff --git a/src/2016/day2/aoc.cpp b/src/2016/day2/aoc.cpp index 55f4247..3b5b28b 100644 --- a/src/2016/day2/aoc.cpp +++ b/src/2016/day2/aoc.cpp @@ -2,4 +2,17 @@ namespace aoc2016 { +int day2(line_view file) { + int d{0}; + int l{5}; + keybad pad; + per_line(file, [&d, &l, &pad](line_view lv) { + l = pad.touch(l, lv.line); + // printf("%d\n", l); + d = d * 10 + l; + return true; + }); + return d; } + +} // namespace aoc2016 diff --git a/src/2016/day2/aoc.h b/src/2016/day2/aoc.h index 4239dbc..2b444cd 100644 --- a/src/2016/day2/aoc.h +++ b/src/2016/day2/aoc.h @@ -1,7 +1,43 @@ #pragma once - #include "common.h" namespace aoc2016 { -} +struct keybad { + enum move { + up, + right, + down, + left, + }; + + int keys[9][4] = { + {1, 2, 4, 1}, {2, 3, 5, 1}, {3, 3, 6, 2}, {1, 5, 7, 4}, {2, 6, 8, 4}, + {3, 6, 9, 5}, {4, 8, 7, 7}, {5, 9, 8, 7}, {6, 9, 9, 8}, + }; + + int touch(int i, char c) { + static int az[] = { + INT_MAX, INT_MAX, INT_MAX, + 2, // D + INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, 3, // L + INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, + 1, // R + INT_MAX, INT_MAX, 0, // U + INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, + }; + return keys[i - 1][az[c - 'A']]; + } + + int touch(int i, const char* p) { + while (*p >= 'A' && *p <= 'Z') { + i = touch(i, *p); + p++; + } + return i; + } +}; + +int day2(line_view); + +} // namespace aoc2016 diff --git a/src/2020/day2/aoc.h b/src/2020/day2/aoc.h index 4239dbc..0a640bb 100644 --- a/src/2020/day2/aoc.h +++ b/src/2020/day2/aoc.h @@ -2,6 +2,6 @@ #include "common.h" -namespace aoc2016 { +namespace aoc2020 { } |