This one's part 1 destroyed me. I had a very difficult time, trying 3 separate approaches, each one of which worked for most cases but eventually fell apart on the 5th sample or my actual puzzle input. I ended up reading a bunch of hints from the subreddit which eventually led me to a blog post describing this solution, which wasn't far off from what I had, but I was overcomplicating things. Part 2 surprised me in that I expected a simple "ore available divided by ore needed for 1 fuel" would solve it, but of course the excess chemicals produced in any given reaction meant that it wasn't that simple. So this approach uses that estimate as a lower bound, since it always underestimates, and then bisects its way to the solution (starting at the lower bound and adding 1 each time took too long). I'm sure a smarter upper bound choice could lower the runtime of this by a bit, but runtime isn't bad enough right now for me to try any additional optimizations.
17 lines
579 B
Plaintext
17 lines
579 B
Plaintext
171 ORE => 8 CNZTR
|
|
7 ZLQW, 3 BMBT, 9 XCVML, 26 XMNCP, 1 WPTQ, 2 MZWV, 1 RJRHP => 4 PLWSL
|
|
114 ORE => 4 BHXH
|
|
14 VRPVC => 6 BMBT
|
|
6 BHXH, 18 KTJDG, 12 WPTQ, 7 PLWSL, 31 FHTLT, 37 ZDVW => 1 FUEL
|
|
6 WPTQ, 2 BMBT, 8 ZLQW, 18 KTJDG, 1 XMNCP, 6 MZWV, 1 RJRHP => 6 FHTLT
|
|
15 XDBXC, 2 LTCX, 1 VRPVC => 6 ZLQW
|
|
13 WPTQ, 10 LTCX, 3 RJRHP, 14 XMNCP, 2 MZWV, 1 ZLQW => 1 ZDVW
|
|
5 BMBT => 4 WPTQ
|
|
189 ORE => 9 KTJDG
|
|
1 MZWV, 17 XDBXC, 3 XCVML => 2 XMNCP
|
|
12 VRPVC, 27 CNZTR => 2 XDBXC
|
|
15 KTJDG, 12 BHXH => 5 XCVML
|
|
3 BHXH, 2 VRPVC => 7 MZWV
|
|
121 ORE => 7 VRPVC
|
|
7 XCVML => 6 RJRHP
|
|
5 BHXH, 4 VRPVC => 5 LTCX |