diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-04-18 21:58:58 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-04-18 21:58:58 +0800 |
commit | 0ef81936a3d4925db0d1e809a946153b33e65343 (patch) | |
tree | 76f4feb25560b39211ebcf8e3120163007e40dd6 /src/2017/day7/aoc.h | |
parent | 62889a8bdaa1fa0cd5f9a412d8171f212b4e1368 (diff) | |
download | advent-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.h | 30 |
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 |