aboutsummaryrefslogtreecommitdiff
path: root/src/2017/day7/aoc.h
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-04-18 21:58:58 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-04-18 21:58:58 +0800
commit0ef81936a3d4925db0d1e809a946153b33e65343 (patch)
tree76f4feb25560b39211ebcf8e3120163007e40dd6 /src/2017/day7/aoc.h
parent62889a8bdaa1fa0cd5f9a412d8171f212b4e1368 (diff)
downloadadvent-of-code-0ef81936a3d4925db0d1e809a946153b33e65343.tar.gz
advent-of-code-0ef81936a3d4925db0d1e809a946153b33e65343.zip
2017 day7 part1
Diffstat (limited to 'src/2017/day7/aoc.h')
-rw-r--r--src/2017/day7/aoc.h30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/2017/day7/aoc.h b/src/2017/day7/aoc.h
index 1f1d643..f3b9104 100644
--- a/src/2017/day7/aoc.h
+++ b/src/2017/day7/aoc.h
@@ -1,5 +1,33 @@
#pragma once
#include "common.h"
+#include <vector>
namespace aoc2017 {
-}
+
+struct disc {
+ line_view name;
+ int weight;
+ std::vector<disc*> subs;
+ const char* xp = nullptr;
+
+ const char* get_number(const char* p, int* d) {
+ *d = 0;
+ while (*p >= '0' && *p <= '9') {
+ *d = *d * 10 + *p - '0';
+ p++;
+ }
+ return p;
+ }
+
+ disc(line_view lv, const char* p) {
+ name = {lv.line, p - 1};
+ p = get_number(p + 1, &weight) + 5;
+ if (p < lv.line + lv.length) {
+ xp = p;
+ }
+ }
+};
+
+void day7(line_view, char[]);
+
+} // namespace aoc2017