You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
3.4 KiB
Markdown

https://adventofcode.com/2021/day/7
## \--- Day 7: The Treachery of Whales ---
A giant [whale](https://en.wikipedia.org/wiki/Sperm_whale) has decided your
submarine is its next meal, and it's much faster than you are. There's nowhere
to run!
Suddenly, a swarm of crabs (each in its own tiny submarine - it's too deep for
them otherwise) zooms in to rescue you! They seem to be preparing to blast a
hole in the ocean floor; sensors indicate a _massive underground cave system_
just beyond where they're aiming!
The crab submarines all need to be aligned before they'll have enough power to
blast a large enough hole for your submarine to get through. However, it
doesn't look like they'll be aligned before the whale catches you! Maybe you
can help?
There's one major catch - crab submarines can only move horizontally.
You quickly make a list of _the horizontal position of each crab_ (your puzzle
input). Crab submarines have limited fuel, so you need to find a way to make
all of their horizontal positions match while requiring them to spend as
little fuel as possible.
For example, consider the following horizontal positions:
[code]
16,1,2,0,4,2,7,1,2,14
[/code]
This means there's a crab with horizontal position `16`, a crab with
horizontal position `1`, and so on.
Each change of 1 step in horizontal position of a single crab costs 1 fuel.
You could choose any horizontal position to align them all on, but the one
that costs the least fuel is horizontal position `2`:
* Move from `16` to `2`: `14` fuel
* Move from `1` to `2`: `1` fuel
* Move from `2` to `2`: `0` fuel
* Move from `0` to `2`: `2` fuel
* Move from `4` to `2`: `2` fuel
* Move from `2` to `2`: `0` fuel
* Move from `7` to `2`: `5` fuel
* Move from `1` to `2`: `1` fuel
* Move from `2` to `2`: `0` fuel
* Move from `14` to `2`: `12` fuel
This costs a total of `_37_` fuel. This is the cheapest possible outcome; more
expensive outcomes include aligning at position `1` (`41` fuel), position `3`
(`39` fuel), or position `10` (`71` fuel).
Determine the horizontal position that the crabs can align to using the least
fuel possible. _How much fuel must they spend to align to that position?_
## \--- Part Two ---
The crabs don't seem interested in your proposed solution. Perhaps you
misunderstand crab engineering?
As it turns out, crab submarine engines don't burn fuel at a constant rate.
Instead, each change of 1 step in horizontal position costs 1 more unit of
fuel than the last: the first step costs `1`, the second step costs `2`, the
third step costs `3`, and so on.
As each crab moves, moving further becomes more expensive. This changes the
best horizontal position to align them all on; in the example above, this
becomes `5`:
* Move from `16` to `5`: `66` fuel
* Move from `1` to `5`: `10` fuel
* Move from `2` to `5`: `6` fuel
* Move from `0` to `5`: `15` fuel
* Move from `4` to `5`: `1` fuel
* Move from `2` to `5`: `6` fuel
* Move from `7` to `5`: `3` fuel
* Move from `1` to `5`: `10` fuel
* Move from `2` to `5`: `6` fuel
* Move from `14` to `5`: `45` fuel
This costs a total of `_168_` fuel. This is the new cheapest possible outcome;
the old alignment position (`2`) now costs `206` fuel instead.
Determine the horizontal position that the crabs can align to using the least
fuel possible so they can make you an escape route! _How much fuel must they
spend to align to that position?_