aoc2019/aoc2019/Day06.cs

33 lines
847 B
C#
Raw Normal View History

2021-11-09 21:52:21 +00:00
namespace aoc2019;
2019-12-06 07:02:01 +00:00
2021-11-09 21:52:21 +00:00
public sealed class Day06 : Day
2019-12-06 07:02:01 +00:00
{
2021-11-09 21:52:21 +00:00
private readonly Dictionary<string, string> input;
2021-11-09 21:52:21 +00:00
public Day06() : base(6, "Universal Orbit Map")
{
input = Input.ToDictionary(i => i.Split(')')[1], i => i.Split(')')[0]);
}
2019-12-06 07:02:01 +00:00
2021-11-09 21:52:21 +00:00
private List<string> GetParents(string obj)
{
var res = new List<string>();
for (var curr = obj; curr != "COM"; curr = input[curr])
res.Add(curr);
res.Add("COM");
return res;
}
2019-12-06 07:02:01 +00:00
public override string Part1() =>
$"{input.Keys.Sum(o => GetParents(o).Count - 1)}";
2019-12-06 07:02:01 +00:00
2021-11-09 21:52:21 +00:00
public override string Part2()
{
var you = GetParents("YOU");
var san = GetParents("SAN");
var common = 1;
for (; you[^common] == san[^common]; common++) ;
return $"{you.Count + san.Count - common * 2}";
2019-12-06 07:02:01 +00:00
}
2021-11-09 21:52:21 +00:00
}