Files
advent-of-code/2019/day06/README.org

148 lines
3.9 KiB
Org Mode

** --- Day 6: Universal Orbit Map ---
You've landed at the Universal Orbit Map facility on Mercury. Because
navigation in space often involves transferring between orbits, the
orbit maps here are useful for finding efficient routes between, for
example, you and Santa. You download a map of the local orbits (your
puzzle input).
Except for the universal Center of Mass (=COM=), every object in space
is in orbit around exactly one other object. An
[[https://en.wikipedia.org/wiki/Orbit][orbit]] looks roughly like this:
#+BEGIN_EXAMPLE
\
\
|
|
AAA--> o o <--BBB
|
|
/
/
#+END_EXAMPLE
In this diagram, the object =BBB= is in orbit around =AAA=. The path
that =BBB= takes around =AAA= (drawn with lines) is only partly shown.
In the map data, this orbital relationship is written =AAA)BBB=, which
means "=BBB= is in orbit around =AAA=".
Before you use your map data to plot a course, you need to make sure it
wasn't corrupted during the download. To verify maps, the Universal
Orbit Map facility uses /orbit count checksums/ - the total number of
/direct orbits/ (like the one shown above) and /indirect orbits/.
Whenever =A= orbits =B= and =B= orbits =C=, then =A= /indirectly orbits/
=C=. This chain can be any number of objects long: if =A= orbits =B=,
=B= orbits =C=, and =C= orbits =D=, then =A= indirectly orbits =D=.
For example, suppose you have the following map:
#+BEGIN_EXAMPLE
COM)B
B)C
C)D
D)E
E)F
B)G
G)H
D)I
E)J
J)K
K)L
#+END_EXAMPLE
Visually, the above map of orbits looks like this:
#+BEGIN_EXAMPLE
G - H J - K - L
/ /
COM - B - C - D - E - F
\
I
#+END_EXAMPLE
In this visual representation, when two objects are connected by a line,
the one on the right directly orbits the one on the left.
Here, we can count the total number of orbits as follows:
- =D= directly orbits =C= and indirectly orbits =B= and =COM=, a total
of =3= orbits.
- =L= directly orbits =K= and indirectly orbits =J=, =E=, =D=, =C=, =B=,
and =COM=, a total of =7= orbits.
- =COM= orbits nothing.
The total number of direct and indirect orbits in this example is =42=.
/What is the total number of direct and indirect orbits/ in your map
data?
Your puzzle answer was =453028=.
** --- Part Two ---
Now, you just need to figure out how many /orbital transfers/ you
(=YOU=) need to take to get to Santa (=SAN=).
You start at the object =YOU= are orbiting; your destination is the
object =SAN= is orbiting. An orbital transfer lets you move from any
object to an object orbiting or orbited by that object.
For example, suppose you have the following map:
#+BEGIN_EXAMPLE
COM)B
B)C
C)D
D)E
E)F
B)G
G)H
D)I
E)J
J)K
K)L
K)YOU
I)SAN
#+END_EXAMPLE
Visually, the above map of orbits looks like this:
#+BEGIN_EXAMPLE
YOU
/
G - H J - K - L
/ /
COM - B - C - D - E - F
\
I - SAN
#+END_EXAMPLE
In this example, =YOU= are in orbit around =K=, and =SAN= is in orbit
around =I=. To move from =K= to =I=, a minimum of =4= orbital transfers
are required:
- =K= to =J=
- =J= to =E=
- =E= to =D=
- =D= to =I=
Afterward, the map of orbits looks like this:
#+BEGIN_EXAMPLE
G - H J - K - L
/ /
COM - B - C - D - E - F
\
I - SAN
\
YOU
#+END_EXAMPLE
/What is the minimum number of orbital transfers required/ to move from
the object =YOU= are orbiting to the object =SAN= is orbiting? (Between
the objects they are orbiting - /not/ between =YOU= and =SAN=.)
Your puzzle answer was =562=.
Both parts of this puzzle are complete! They provide two gold stars: **