diff options
author | Kai WU <kaiwu2004@gmail.com> | 2022-03-18 09:13:49 +0800 |
---|---|---|
committer | Kai WU <kaiwu2004@gmail.com> | 2022-03-18 09:13:49 +0800 |
commit | f1023205abc22271c9f83cd81a119558d7c07702 (patch) | |
tree | 57cbd1d43deccce93b21632b604f9c5ce8203969 /src | |
parent | 2f44c63c1d31e20fbb848568a53c09823f54a329 (diff) | |
download | advent-of-code-f1023205abc22271c9f83cd81a119558d7c07702.tar.gz advent-of-code-f1023205abc22271c9f83cd81a119558d7c07702.zip |
day7 done
Diffstat (limited to 'src')
-rw-r--r-- | src/2015/day7/README.md | 3 | ||||
-rw-r--r-- | src/2015/day7/aoc.cpp | 7 | ||||
-rw-r--r-- | src/2015/day7/aoc.h | 9 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/2015/day7/README.md b/src/2015/day7/README.md index 532301b..01d2647 100644 --- a/src/2015/day7/README.md +++ b/src/2015/day7/README.md @@ -40,4 +40,7 @@ y: 456 In little Bobby's kit's instructions booklet (provided as your puzzle input), what signal is ultimately provided to wire a? +--- Part Two --- + +Now, take the signal you got on wire a, override wire b to that signal, and reset the other wires (including wire a). What new signal is ultimately provided to wire a? diff --git a/src/2015/day7/aoc.cpp b/src/2015/day7/aoc.cpp index b09e317..1963f3c 100644 --- a/src/2015/day7/aoc.cpp +++ b/src/2015/day7/aoc.cpp @@ -2,12 +2,15 @@ namespace aoc2015 { -result day7(line_view file, const char* wire) { +result day7(line_view file, const char* wire, const char* extra) { cals cs; per_line(file, [&cs](line_view lv) { - cs.parse(lv); + cs.parse({lv.line, lv.line + lv.length - 1}); return true; }); + if (extra != nullptr) { + cs.parse(extra); + } return cs.compute(wire); } diff --git a/src/2015/day7/aoc.h b/src/2015/day7/aoc.h index 4299fcb..770fd4d 100644 --- a/src/2015/day7/aoc.h +++ b/src/2015/day7/aoc.h @@ -119,7 +119,7 @@ struct cals { {&cals::op_rightshift, "RSHIFT"}, }; const char* arrow = line.contains("->"); - *w = line_view(arrow + 3, line.line + line.length - 1); + *w = line_view(arrow + 3, line.line + line.length); for (auto op : ops) { const char* p = line.contains(op.label); @@ -145,10 +145,13 @@ struct cals { line_view* y = new line_view(); line_view* w = new line_view(); auto f = parse(line, x, y, w); - calls.insert({*w, {f, {result::c_unknown, 0}}}); + auto p = calls.insert({*w, {f, {result::c_unknown, 0}}}); + if (p.second == false) { + p.first->second = {f, {result::c_unknown, 0}}; + } } }; -result day7(line_view, const char*); +result day7(line_view, const char*, const char* = nullptr); } // namespace aoc2015 |