aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-04-04 20:56:01 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-04-04 20:56:01 +0800
commitc5af45b0a6985aae151783ce27b752b885bd6c06 (patch)
tree0fc4deda1a59653f6e9dcb3c365a4f627ab67e9e /src
parent1078cd54eb79b30fa4614e303cb8df78d2439e31 (diff)
downloadadvent-of-code-c5af45b0a6985aae151783ce27b752b885bd6c06.tar.gz
advent-of-code-c5af45b0a6985aae151783ce27b752b885bd6c06.zip
2016 day2 part1
Diffstat (limited to 'src')
-rw-r--r--src/2016/day2/aoc.cpp13
-rw-r--r--src/2016/day2/aoc.h40
-rw-r--r--src/2020/day2/aoc.h2
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 {
}