From 6e7699abd4ed70c372477c4d1797dab1b15d131b Mon Sep 17 00:00:00 2001 From: kaiwu Date: Wed, 15 Mar 2023 11:27:38 +0800 Subject: 2017 day23 part2 --- src/2017/day23/aoc.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/2017/day23/aoc.cpp b/src/2017/day23/aoc.cpp index 7d990e3..4d44c24 100644 --- a/src/2017/day23/aoc.cpp +++ b/src/2017/day23/aoc.cpp @@ -81,7 +81,7 @@ static size_t exec(size_t index, const std::vector& todos, int64_t rs return index; } -static void part1(const std::vector& todos) { +static void part1(std::vector todos) { size_t index{0}; int64_t rs[26] = {0}; @@ -90,15 +90,34 @@ static void part1(const std::vector& todos) { } } +static void part2(std::vector todos) { + size_t index{0}; + int64_t rs[26] = {0}; + rs[0] = 1; // a is 1 + auto print = [](int64_t is[26]) { + for (char c = 'a'; c <= 'h'; c++) { + printf("%c[%ld] ", c, is[c - 'a']); + } + printf("\n"); + }; + + while (index < todos.size()) { + std::cout << todos[index] << " "; + index = exec(index, todos, rs); + print(rs); + } +} + std::pair day23(line_view file) { std::vector todos; per_line(file, [&todos](line_view lv) { - todos.push_back(lv); + todos.push_back({lv.line, lv.length - 1}); return true; }); part1(todos); int64_t t0 = fs[2].c; + part2(todos); return {t0, 0}; } -- cgit v1.2.3