332 lines
15 KiB
Plaintext
332 lines
15 KiB
Plaintext
Advent of Code
|
|
|
|
--- Day 24: Immune System Simulator 20XX ---
|
|
|
|
After a weird buzzing noise, you appear back at the man's cottage. He seems
|
|
relieved to see his friend, but quickly notices that the little reindeer
|
|
caught some kind of cold while out exploring.
|
|
|
|
The portly man explains that this reindeer's immune system isn't similar to
|
|
regular reindeer immune systems:
|
|
|
|
The immune system and the infection each have an army made up of several
|
|
groups; each group consists of one or more identical units. The armies
|
|
repeatedly fight until only one army has units remaining.
|
|
|
|
Units within a group all have the same hit points (amount of damage a unit
|
|
can take before it is destroyed), attack damage (the amount of damage each
|
|
unit deals), an attack type, an initiative (higher initiative units attack
|
|
first and win ties), and sometimes weaknesses or immunities. Here is an
|
|
example group:
|
|
|
|
18 units each with 729 hit points (weak to fire; immune to cold, slashing)
|
|
with an attack that does 8 radiation damage at initiative 10
|
|
|
|
Each group also has an effective power: the number of units in that group
|
|
multiplied by their attack damage. The above group has an effective power of
|
|
18 * 8 = 144. Groups never have zero or negative units; instead, the group
|
|
is removed from combat.
|
|
|
|
Each fight consists of two phases: target selection and attacking.
|
|
|
|
During the target selection phase, each group attempts to choose one target.
|
|
In decreasing order of effective power, groups choose their targets; in a
|
|
tie, the group with the higher initiative chooses first. The attacking group
|
|
chooses to target the group in the enemy army to which it would deal the
|
|
most damage (after accounting for weaknesses and immunities, but not
|
|
accounting for whether the defending group has enough units to actually
|
|
receive all of that damage).
|
|
|
|
If an attacking group is considering two defending groups to which it would
|
|
deal equal damage, it chooses to target the defending group with the largest
|
|
effective power; if there is still a tie, it chooses the defending group
|
|
with the highest initiative. If it cannot deal any defending groups damage,
|
|
it does not choose a target. Defending groups can only be chosen as a target
|
|
by one attacking group.
|
|
|
|
At the end of the target selection phase, each group has selected zero or
|
|
one groups to attack, and each group is being attacked by zero or one
|
|
groups.
|
|
|
|
During the attacking phase, each group deals damage to the target it
|
|
selected, if any. Groups attack in decreasing order of initiative,
|
|
regardless of whether they are part of the infection or the immune system.
|
|
(If a group contains no units, it cannot attack.)
|
|
|
|
The damage an attacking group deals to a defending group depends on the
|
|
attacking group's attack type and the defending group's immunities and
|
|
weaknesses. By default, an attacking group would deal damage equal to its
|
|
effective power to the defending group. However, if the defending group is
|
|
immune to the attacking group's attack type, the defending group instead
|
|
takes no damage; if the defending group is weak to the attacking group's
|
|
attack type, the defending group instead takes double damage.
|
|
|
|
The defending group only loses whole units from damage; damage is always
|
|
dealt in such a way that it kills the most units possible, and any remaining
|
|
damage to a unit that does not immediately kill it is ignored. For example,
|
|
if a defending group contains 10 units with 10 hit points each and receives
|
|
75 damage, it loses exactly 7 units and is left with 3 units at full health.
|
|
|
|
After the fight is over, if both armies still contain units, a new fight
|
|
begins; combat only ends once one army has lost all of its units.
|
|
|
|
For example, consider the following armies:
|
|
|
|
Immune System: 17 units each with 5390 hit points (weak to radiation,
|
|
bludgeoning) with an attack that does 4507 fire damage at initiative 2 989
|
|
units each with 1274 hit points (immune to fire; weak to bludgeoning,
|
|
slashing) with an attack that does 25 slashing damage at initiative 3
|
|
|
|
Infection: 801 units each with 4706 hit points (weak to radiation) with an
|
|
attack that does 116 bludgeoning damage at initiative 1 4485 units each with
|
|
2961 hit points (immune to radiation; weak to fire, cold) with an attack that
|
|
does 12 slashing damage at initiative 4
|
|
|
|
If these armies were to enter combat, the following fights, including
|
|
details during the target selection and attacking phases, would take place:
|
|
|
|
Immune System: Group 1 contains 17 units Group 2 contains 989 units Infection:
|
|
Group 1 contains 801 units Group 2 contains 4485 units
|
|
|
|
Infection group 1 would deal defending group 1 185832 damage Infection group 1
|
|
would deal defending group 2 185832 damage Infection group 2 would deal
|
|
defending group 2 107640 damage Immune System group 1 would deal defending
|
|
group 1 76619 damage Immune System group 1 would deal defending group 2 153238
|
|
damage Immune System group 2 would deal defending group 1 24725 damage
|
|
|
|
Infection group 2 attacks defending group 2, killing 84 units Immune System
|
|
group 2 attacks defending group 1, killing 4 units Immune System group 1
|
|
attacks defending group 2, killing 51 units Infection group 1 attacks
|
|
defending group 1, killing 17 units
|
|
|
|
Immune System: Group 2 contains 905 units Infection: Group 1 contains 797
|
|
units Group 2 contains 4434 units
|
|
|
|
Infection group 1 would deal defending group 2 184904 damage Immune System
|
|
group 2 would deal defending group 1 22625 damage Immune System group 2 would
|
|
deal defending group 2 22625 damage
|
|
|
|
Immune System group 2 attacks defending group 1, killing 4 units Infection
|
|
group 1 attacks defending group 2, killing 144 units
|
|
|
|
Immune System: Group 2 contains 761 units Infection: Group 1 contains 793
|
|
units Group 2 contains 4434 units
|
|
|
|
Infection group 1 would deal defending group 2 183976 damage Immune System
|
|
group 2 would deal defending group 1 19025 damage Immune System group 2 would
|
|
deal defending group 2 19025 damage
|
|
|
|
Immune System group 2 attacks defending group 1, killing 4 units Infection
|
|
group 1 attacks defending group 2, killing 143 units
|
|
|
|
Immune System: Group 2 contains 618 units Infection: Group 1 contains 789
|
|
units Group 2 contains 4434 units
|
|
|
|
Infection group 1 would deal defending group 2 183048 damage Immune System
|
|
group 2 would deal defending group 1 15450 damage Immune System group 2 would
|
|
deal defending group 2 15450 damage
|
|
|
|
Immune System group 2 attacks defending group 1, killing 3 units Infection
|
|
group 1 attacks defending group 2, killing 143 units
|
|
|
|
Immune System: Group 2 contains 475 units Infection: Group 1 contains 786
|
|
units Group 2 contains 4434 units
|
|
|
|
Infection group 1 would deal defending group 2 182352 damage Immune System
|
|
group 2 would deal defending group 1 11875 damage Immune System group 2 would
|
|
deal defending group 2 11875 damage
|
|
|
|
Immune System group 2 attacks defending group 1, killing 2 units Infection
|
|
group 1 attacks defending group 2, killing 142 units
|
|
|
|
Immune System: Group 2 contains 333 units Infection: Group 1 contains 784
|
|
units Group 2 contains 4434 units
|
|
|
|
Infection group 1 would deal defending group 2 181888 damage Immune System
|
|
group 2 would deal defending group 1 8325 damage Immune System group 2 would
|
|
deal defending group 2 8325 damage
|
|
|
|
Immune System group 2 attacks defending group 1, killing 1 unit Infection
|
|
group 1 attacks defending group 2, killing 142 units
|
|
|
|
Immune System: Group 2 contains 191 units Infection: Group 1 contains 783
|
|
units Group 2 contains 4434 units
|
|
|
|
Infection group 1 would deal defending group 2 181656 damage Immune System
|
|
group 2 would deal defending group 1 4775 damage Immune System group 2 would
|
|
deal defending group 2 4775 damage
|
|
|
|
Immune System group 2 attacks defending group 1, killing 1 unit Infection
|
|
group 1 attacks defending group 2, killing 142 units
|
|
|
|
Immune System: Group 2 contains 49 units Infection: Group 1 contains 782 units
|
|
Group 2 contains 4434 units
|
|
|
|
Infection group 1 would deal defending group 2 181424 damage Immune System
|
|
group 2 would deal defending group 1 1225 damage Immune System group 2 would
|
|
deal defending group 2 1225 damage
|
|
|
|
Immune System group 2 attacks defending group 1, killing 0 units Infection
|
|
group 1 attacks defending group 2, killing 49 units
|
|
|
|
Immune System: No groups remain. Infection: Group 1 contains 782 units Group 2
|
|
contains 4434 units
|
|
|
|
In the example above, the winning army ends up with 782 + 4434 = 5216 units.
|
|
|
|
You scan the reindeer's condition (your puzzle input); the white-bearded man
|
|
looks nervous. As it stands now, how many units would the winning army have?
|
|
|
|
Your puzzle answer was 16747.
|
|
|
|
--- Part Two ---
|
|
|
|
Things aren't looking good for the reindeer. The man asks whether more milk
|
|
and cookies would help you think.
|
|
|
|
If only you could give the reindeer's immune system a boost, you might be
|
|
able to change the outcome of the combat.
|
|
|
|
A boost is an integer increase in immune system units' attack damage. For
|
|
example, if you were to boost the above example's immune system's units by
|
|
1570, the armies would instead look like this:
|
|
|
|
Immune System: 17 units each with 5390 hit points (weak to radiation,
|
|
bludgeoning) with an attack that does 6077 fire damage at initiative 2 989
|
|
units each with 1274 hit points (immune to fire; weak to bludgeoning,
|
|
slashing) with an attack that does 1595 slashing damage at initiative 3
|
|
|
|
Infection: 801 units each with 4706 hit points (weak to radiation) with an
|
|
attack that does 116 bludgeoning damage at initiative 1 4485 units each with
|
|
2961 hit points (immune to radiation; weak to fire, cold) with an attack that
|
|
does 12 slashing damage at initiative 4
|
|
|
|
With this boost, the combat proceeds differently:
|
|
|
|
Immune System: Group 2 contains 989 units Group 1 contains 17 units Infection:
|
|
Group 1 contains 801 units Group 2 contains 4485 units
|
|
|
|
Infection group 1 would deal defending group 2 185832 damage Infection group 1
|
|
would deal defending group 1 185832 damage Infection group 2 would deal
|
|
defending group 1 53820 damage Immune System group 2 would deal defending
|
|
group 1 1577455 damage Immune System group 2 would deal defending group 2
|
|
1577455 damage Immune System group 1 would deal defending group 2 206618
|
|
damage
|
|
|
|
Infection group 2 attacks defending group 1, killing 9 units Immune System
|
|
group 2 attacks defending group 1, killing 335 units Immune System group 1
|
|
attacks defending group 2, killing 32 units Infection group 1 attacks
|
|
defending group 2, killing 84 units
|
|
|
|
Immune System: Group 2 contains 905 units Group 1 contains 8 units Infection:
|
|
Group 1 contains 466 units Group 2 contains 4453 units
|
|
|
|
Infection group 1 would deal defending group 2 108112 damage Infection group 1
|
|
would deal defending group 1 108112 damage Infection group 2 would deal
|
|
defending group 1 53436 damage Immune System group 2 would deal defending
|
|
group 1 1443475 damage Immune System group 2 would deal defending group 2
|
|
1443475 damage Immune System group 1 would deal defending group 2 97232 damage
|
|
|
|
Infection group 2 attacks defending group 1, killing 8 units Immune System
|
|
group 2 attacks defending group 1, killing 306 units Infection group 1 attacks
|
|
defending group 2, killing 29 units
|
|
|
|
Immune System: Group 2 contains 876 units Infection: Group 2 contains 4453
|
|
units Group 1 contains 160 units
|
|
|
|
Infection group 2 would deal defending group 2 106872 damage Immune System
|
|
group 2 would deal defending group 2 1397220 damage Immune System group 2
|
|
would deal defending group 1 1397220 damage
|
|
|
|
Infection group 2 attacks defending group 2, killing 83 units Immune System
|
|
group 2 attacks defending group 2, killing 427 units
|
|
|
|
After a few fights...
|
|
|
|
Immune System: Group 2 contains 64 units Infection: Group 2 contains 214 units
|
|
Group 1 contains 19 units
|
|
|
|
Infection group 2 would deal defending group 2 5136 damage Immune System group
|
|
2 would deal defending group 2 102080 damage Immune System group 2 would deal
|
|
defending group 1 102080 damage
|
|
|
|
Infection group 2 attacks defending group 2, killing 4 units Immune System
|
|
group 2 attacks defending group 2, killing 32 units
|
|
|
|
Immune System: Group 2 contains 60 units Infection: Group 1 contains 19 units
|
|
Group 2 contains 182 units
|
|
|
|
Infection group 1 would deal defending group 2 4408 damage Immune System group
|
|
2 would deal defending group 1 95700 damage Immune System group 2 would deal
|
|
defending group 2 95700 damage
|
|
|
|
Immune System group 2 attacks defending group 1, killing 19 units
|
|
|
|
Immune System: Group 2 contains 60 units Infection: Group 2 contains 182 units
|
|
|
|
Infection group 2 would deal defending group 2 4368 damage Immune System group
|
|
2 would deal defending group 2 95700 damage
|
|
|
|
Infection group 2 attacks defending group 2, killing 3 units Immune System
|
|
group 2 attacks defending group 2, killing 30 units
|
|
|
|
After a few more fights...
|
|
|
|
Immune System: Group 2 contains 51 units Infection: Group 2 contains 40 units
|
|
|
|
Infection group 2 would deal defending group 2 960 damage Immune System group
|
|
2 would deal defending group 2 81345 damage
|
|
|
|
Infection group 2 attacks defending group 2, killing 0 units Immune System
|
|
group 2 attacks defending group 2, killing 27 units
|
|
|
|
Immune System: Group 2 contains 51 units Infection: Group 2 contains 13 units
|
|
|
|
Infection group 2 would deal defending group 2 312 damage Immune System group
|
|
2 would deal defending group 2 81345 damage
|
|
|
|
Infection group 2 attacks defending group 2, killing 0 units Immune System
|
|
group 2 attacks defending group 2, killing 13 units
|
|
|
|
Immune System: Group 2 contains 51 units Infection: No groups remain.
|
|
|
|
This boost would allow the immune system's armies to win! It would be left
|
|
with 51 units.
|
|
|
|
You don't even know how you could boost the reindeer's immune system or what
|
|
effect it might have, so you need to be cautious and find the smallest boost
|
|
that would allow the immune system to win.
|
|
|
|
How many units does the immune system have left after getting the smallest
|
|
boost it needs to win?
|
|
|
|
Your puzzle answer was 5923.
|
|
|
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
|
|
|
At this point, you should return to your Advent calendar and try another
|
|
puzzle.
|
|
|
|
If you still want to see it, you can get your puzzle input.
|
|
|
|
References
|
|
|
|
Visible links
|
|
. https://adventofcode.com/
|
|
. https://adventofcode.com/2018/about
|
|
. https://adventofcode.com/2018/events
|
|
. https://adventofcode.com/2018/settings
|
|
. https://adventofcode.com/2018/auth/logout
|
|
. Advent of Code Supporter
|
|
https://adventofcode.com/2018/support
|
|
. https://adventofcode.com/2018
|
|
. https://adventofcode.com/2018
|
|
. https://adventofcode.com/2018/support
|
|
. https://adventofcode.com/2018/sponsors
|
|
. https://adventofcode.com/2018/leaderboard
|
|
. https://adventofcode.com/2018/stats
|
|
. https://adventofcode.com/2018/sponsors
|
|
. https://www.youtube.com/watch?v=NDVjLt_QHL8&t=7
|
|
. https://adventofcode.com/2018
|
|
. https://adventofcode.com/2018/day/24/input
|