aboutsummaryrefslogtreecommitdiff
path: root/src/2020/day8/aoc.h
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-05-14 17:17:04 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-05-14 17:17:04 +0800
commit1a9146ae65c309c1c4dafb57a08ffb25c632fa78 (patch)
tree25df8befca23799897ee0755f1be3e066db1f8ac /src/2020/day8/aoc.h
parent3063b07245326e11667d50eeed1eaa52b93b8f68 (diff)
downloadadvent-of-code-1a9146ae65c309c1c4dafb57a08ffb25c632fa78.tar.gz
advent-of-code-1a9146ae65c309c1c4dafb57a08ffb25c632fa78.zip
2020 day8 part1
Diffstat (limited to 'src/2020/day8/aoc.h')
-rw-r--r--src/2020/day8/aoc.h45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/2020/day8/aoc.h b/src/2020/day8/aoc.h
index c5ad3d1..ae2b8ee 100644
--- a/src/2020/day8/aoc.h
+++ b/src/2020/day8/aoc.h
@@ -3,4 +3,47 @@
namespace aoc2020 {
-}
+enum code_t {
+ nop,
+ jmp,
+ acc,
+};
+
+struct code {
+ code_t type;
+ int value;
+ int executed = 0;
+
+ void get_number(const char** pp, int* d) {
+ const char* p = *pp;
+ int sign = *p == '+' ? 1 : -1;
+ p += 1;
+ *d = 0;
+ while (*p >= '0' && *p <= '9') {
+ *d = *d * 10 + *p - '0';
+ p++;
+ }
+ *d *= sign;
+ *pp = p;
+ }
+
+ code(line_view lv) {
+ const char* p = lv.line;
+ if (*p == 'a')
+ type = acc;
+ if (*p == 'n')
+ type = nop;
+ if (*p == 'j')
+ type = jmp;
+ while (p < lv.line + lv.length) {
+ if (*p == '+' || *p == '-') {
+ get_number(&p, &value);
+ }
+ p++;
+ }
+ }
+};
+
+int day8(line_view);
+
+} // namespace aoc2020