diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/2022/day19/aoc.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/2022/day19/aoc.cpp b/src/2022/day19/aoc.cpp index 737c230..f368561 100644 --- a/src/2022/day19/aoc.cpp +++ b/src/2022/day19/aoc.cpp @@ -4,7 +4,7 @@ namespace aoc2022 { -static const int total = 24; +static const int total = 32; struct build_result { int products[4] = {0, 0, 0, 0}; // ore,clay,obsi,geod @@ -99,17 +99,17 @@ bool can_build(const blueprint& b, const build_result& r, int i) { // 29 24| ms: 1 21 8 9 | rs: 1 3 2 2 // 30 24| ms: 2 10 4 1 | rs: 2 6 3 1 void build_product(const blueprint& b, build_result r, std::vector<build_result>& rs) { - bool done{false}; - for (int i = 3; i >= 0 && !done; i--) { + bool ds[4] = {false, false, false, false}; + for (int i = 3; i >= 0; i--) { auto r0 = r; if (can_build(b, r0, i)) { r0 = build_robot(i, r0, b); build_product(r0, i); rs.push_back(r0); - done = i > 1; // best senario + ds[i] = true; } } - if (!done) { + if (!ds[3] && !ds[2] && !(ds[1] && ds[0])) { build_product(r, 4); rs.push_back(r); } |