aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKai WU <kaiwu2004@gmail.com>2022-03-18 09:13:49 +0800
committerKai WU <kaiwu2004@gmail.com>2022-03-18 09:13:49 +0800
commitf1023205abc22271c9f83cd81a119558d7c07702 (patch)
tree57cbd1d43deccce93b21632b604f9c5ce8203969 /src
parent2f44c63c1d31e20fbb848568a53c09823f54a329 (diff)
downloadadvent-of-code-f1023205abc22271c9f83cd81a119558d7c07702.tar.gz
advent-of-code-f1023205abc22271c9f83cd81a119558d7c07702.zip
day7 done
Diffstat (limited to 'src')
-rw-r--r--src/2015/day7/README.md3
-rw-r--r--src/2015/day7/aoc.cpp7
-rw-r--r--src/2015/day7/aoc.h9
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