about summary refs log tree commit diff
path: root/aoc2019/Day06.cs
blob: 9cdbde4e1d72ba19994e00fd1a72f5f6b5d909d4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
namespace aoc2019;

public sealed class Day06 : Day
{
    private readonly Dictionary<string, string> input;

    public Day06() : base(6, "Universal Orbit Map")
    {
        input = Input.ToDictionary(i => i.Split(')')[1], i => i.Split(')')[0]);
    }

    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;
    }

    public override string Part1() =>
        $"{input.Keys.Sum(o => GetParents(o).Count - 1)}";

    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}";
    }
}