Beispiel #1
0
    public static int Part2(string inputText)
    {
        var tree = InputParser.ReadTree(inputText.Replace("\r", ""), '\n', ')');

        var you = Find(tree.Root, "YOU");
        var san = Find(tree.Root, "SAN");

        var myParents = new Dictionary <string, int>();

        InputParser.TreeNode parent = you;
        int distance = 0;

        while (parent.Parent != null)
        {
            parent = parent.Parent;
            myParents.Add(parent.Name, ++distance);
        }

        parent   = san;
        distance = 0;
        while (!myParents.ContainsKey(parent.Name))
        {
            parent = parent.Parent;
            distance++;
        }


        return(distance + myParents[parent.Name] - 2);
    }
Beispiel #2
0
 private static InputParser.TreeNode Find(InputParser.TreeNode node, string v)
 {
     if (node.Children.Any(x => x.Name == v))
     {
         return(node.Children.First(x => x.Name == v));
     }
     else
     {
         foreach (var child in node.Children)
         {
             var result = Find(child, v);
             if (result != null)
             {
                 return(result);
             }
         }
     }
     return(null);
 }