149 lines
5.5 KiB
Plaintext
149 lines
5.5 KiB
Plaintext
|
Advent of Code
|
|||
|
|
|||
|
--- Day 14: Space Stoichiometry ---
|
|||
|
|
|||
|
As you approach the rings of Saturn, your ship's low fuel indicator turns on. There isn't any fuel here, but the rings have
|
|||
|
plenty of raw material. Perhaps your ship's Inter-Stellar Refinery Union brand nanofactory can turn these raw materials into
|
|||
|
fuel.
|
|||
|
|
|||
|
You ask the nanofactory to produce a list of the reactions it can perform that are relevant to this process (your puzzle
|
|||
|
input). Every reaction turns some quantities of specific input chemicals into some quantity of an output chemical. Almost
|
|||
|
every chemical is produced by exactly one reaction; the only exception, ORE, is the raw material input to the entire process
|
|||
|
and is not produced by a reaction.
|
|||
|
|
|||
|
You just need to know how much ORE you'll need to collect before you can produce one unit of FUEL.
|
|||
|
|
|||
|
Each reaction gives specific quantities for its inputs and output; reactions cannot be partially run, so only whole integer
|
|||
|
multiples of these quantities can be used. (It's okay to have leftover chemicals when you're done, though.) For example, the
|
|||
|
reaction 1 A, 2 B, 3 C => 2 D means that exactly 2 units of chemical D can be produced by consuming exactly 1 A, 2 B and 3 C.
|
|||
|
You can run the full reaction as many times as necessary; for example, you could produce 10 D by consuming 5 A, 10 B, and 15
|
|||
|
C.
|
|||
|
|
|||
|
Suppose your nanofactory produces the following list of reactions:
|
|||
|
|
|||
|
10 ORE => 10 A
|
|||
|
1 ORE => 1 B
|
|||
|
7 A, 1 B => 1 C
|
|||
|
7 A, 1 C => 1 D
|
|||
|
7 A, 1 D => 1 E
|
|||
|
7 A, 1 E => 1 FUEL
|
|||
|
|
|||
|
The first two reactions use only ORE as inputs; they indicate that you can produce as much of chemical A as you want (in
|
|||
|
increments of 10 units, each 10 costing 10 ORE) and as much of chemical B as you want (each costing 1 ORE). To produce 1
|
|||
|
FUEL, a total of 31 ORE is required: 1 ORE to produce 1 B, then 30 more ORE to produce the 7 + 7 + 7 + 7 = 28 A (with 2 extra
|
|||
|
A wasted) required in the reactions to convert the B into C, C into D, D into E, and finally E into FUEL. (30 A is produced
|
|||
|
because its reaction requires that it is created in increments of 10.)
|
|||
|
|
|||
|
Or, suppose you have the following list of reactions:
|
|||
|
|
|||
|
9 ORE => 2 A
|
|||
|
8 ORE => 3 B
|
|||
|
7 ORE => 5 C
|
|||
|
3 A, 4 B => 1 AB
|
|||
|
5 B, 7 C => 1 BC
|
|||
|
4 C, 1 A => 1 CA
|
|||
|
2 AB, 3 BC, 4 CA => 1 FUEL
|
|||
|
|
|||
|
The above list of reactions requires 165 ORE to produce 1 FUEL:
|
|||
|
|
|||
|
• Consume 45 ORE to produce 10 A.
|
|||
|
• Consume 64 ORE to produce 24 B.
|
|||
|
• Consume 56 ORE to produce 40 C.
|
|||
|
• Consume 6 A, 8 B to produce 2 AB.
|
|||
|
• Consume 15 B, 21 C to produce 3 BC.
|
|||
|
• Consume 16 C, 4 A to produce 4 CA.
|
|||
|
• Consume 2 AB, 3 BC, 4 CA to produce 1 FUEL.
|
|||
|
|
|||
|
Here are some larger examples:
|
|||
|
|
|||
|
• 13312 ORE for 1 FUEL:
|
|||
|
|
|||
|
157 ORE => 5 NZVS
|
|||
|
165 ORE => 6 DCFZ
|
|||
|
44 XJWVT, 5 KHKGT, 1 QDVJ, 29 NZVS, 9 GPVTF, 48 HKGWZ => 1 FUEL
|
|||
|
12 HKGWZ, 1 GPVTF, 8 PSHF => 9 QDVJ
|
|||
|
179 ORE => 7 PSHF
|
|||
|
177 ORE => 5 HKGWZ
|
|||
|
7 DCFZ, 7 PSHF => 2 XJWVT
|
|||
|
165 ORE => 2 GPVTF
|
|||
|
3 DCFZ, 7 NZVS, 5 HKGWZ, 10 PSHF => 8 KHKGT
|
|||
|
|
|||
|
• 180697 ORE for 1 FUEL:
|
|||
|
|
|||
|
2 VPVL, 7 FWMGM, 2 CXFTF, 11 MNCFX => 1 STKFG
|
|||
|
17 NVRVD, 3 JNWZP => 8 VPVL
|
|||
|
53 STKFG, 6 MNCFX, 46 VJHF, 81 HVMC, 68 CXFTF, 25 GNMV => 1 FUEL
|
|||
|
22 VJHF, 37 MNCFX => 5 FWMGM
|
|||
|
139 ORE => 4 NVRVD
|
|||
|
144 ORE => 7 JNWZP
|
|||
|
5 MNCFX, 7 RFSQX, 2 FWMGM, 2 VPVL, 19 CXFTF => 3 HVMC
|
|||
|
5 VJHF, 7 MNCFX, 9 VPVL, 37 CXFTF => 6 GNMV
|
|||
|
145 ORE => 6 MNCFX
|
|||
|
1 NVRVD => 8 CXFTF
|
|||
|
1 VJHF, 6 MNCFX => 4 RFSQX
|
|||
|
176 ORE => 6 VJHF
|
|||
|
|
|||
|
• 2210736 ORE for 1 FUEL:
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
Given the list of reactions in your puzzle input, what is the minimum amount of ORE required to produce exactly 1 FUEL?
|
|||
|
|
|||
|
Your puzzle answer was 751038.
|
|||
|
|
|||
|
--- Part Two ---
|
|||
|
|
|||
|
After collecting ORE for a while, you check your cargo hold: 1 trillion (1000000000000) units of ORE.
|
|||
|
|
|||
|
With that much ore, given the examples above:
|
|||
|
|
|||
|
• The 13312 ORE-per-FUEL example could produce 82892753 FUEL.
|
|||
|
• The 180697 ORE-per-FUEL example could produce 5586022 FUEL.
|
|||
|
• The 2210736 ORE-per-FUEL example could produce 460664 FUEL.
|
|||
|
|
|||
|
Given 1 trillion ORE, what is the maximum amount of FUEL you can produce?
|
|||
|
|
|||
|
Your puzzle answer was 2074843.
|
|||
|
|
|||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
|||
|
|
|||
|
At this point, all that is left is for you to admire your Advent calendar.
|
|||
|
|
|||
|
If you still want to see it, you can get your puzzle input.
|
|||
|
|
|||
|
References
|
|||
|
|
|||
|
Visible links
|
|||
|
. https://adventofcode.com/
|
|||
|
. https://adventofcode.com/2019/about
|
|||
|
. https://adventofcode.com/2019/events
|
|||
|
. https://adventofcode.com/2019/settings
|
|||
|
. https://adventofcode.com/2019/auth/logout
|
|||
|
. Advent of Code Supporter
|
|||
|
https://adventofcode.com/2019/support
|
|||
|
. https://adventofcode.com/2019
|
|||
|
. https://adventofcode.com/2019
|
|||
|
. https://adventofcode.com/2019/support
|
|||
|
. https://adventofcode.com/2019/sponsors
|
|||
|
. https://adventofcode.com/2019/leaderboard
|
|||
|
. https://adventofcode.com/2019/stats
|
|||
|
. https://adventofcode.com/2019/sponsors
|
|||
|
. https://adventofcode.com/2019
|
|||
|
. https://adventofcode.com/2019/day/14/input
|