This commit is contained in:
2019-12-09 20:45:31 -05:00
parent cc40fd780a
commit 163e35f732
7 changed files with 1197 additions and 2 deletions

View File

@@ -19,6 +19,12 @@
<None Update="Day3\input.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Day6\input.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Day6\test-input.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@@ -3,4 +3,5 @@
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=day2/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=day3/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=day4/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=day5/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=day5/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=day6/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

104
Day6/Day6.cs Normal file
View File

@@ -0,0 +1,104 @@
using System;
using System.Collections.Generic;
using System.IO;
namespace Advent
{
public static class Day6
{
private static readonly Dictionary<string, MapObject> Orbits = new Dictionary<string, MapObject>
{
["COM"] = new MapObject { Name = "COM" }
};
public static void Execute()
{
var lines = File.ReadAllLines(@".\Day6\input.txt");
foreach (var line in lines)
{
var lineParts = line.Split(')');
var orbitObject = lineParts[1];
Orbits[orbitObject] = new MapObject { Name = orbitObject };
}
foreach (var line in lines)
{
var lineParts = line.Split(')');
var orbitCenter = lineParts[0];
var orbitObject = lineParts[1];
Orbits[orbitObject].Parent = Orbits[orbitCenter];
}
var count = 0;
foreach (var orbitKey in Orbits.Keys)
{
var orbitObject = Orbits[orbitKey];
while (orbitObject.Parent != null)
{
count++;
orbitObject = orbitObject.Parent;
}
}
Console.WriteLine(count);
var santaPath = GetPath("SAN");
var myPath = GetPath("YOU");
var commonPoint = string.Empty;
foreach (var key in myPath)
{
if (santaPath.Contains(key))
{
commonPoint = key;
break;
}
}
var jumpCount = 0;
foreach (var key in myPath)
{
if (key == commonPoint)
break;
jumpCount++;
}
foreach (var key in santaPath)
{
if (key == commonPoint)
break;
jumpCount++;
}
Console.WriteLine(jumpCount);
}
private static List<string> GetPath(string startKey)
{
var path = new List<string>();
var orbitObject = Orbits[startKey];
while (orbitObject.Parent != null)
{
orbitObject = orbitObject.Parent;
path.Add(orbitObject.Name);
}
return path;
}
}
}

8
Day6/MapObject.cs Normal file
View File

@@ -0,0 +1,8 @@
namespace Advent
{
public class MapObject
{
public string Name { get; set; }
public MapObject Parent { get; set; }
}
}

1062
Day6/input.txt Normal file

File diff suppressed because it is too large Load Diff

13
Day6/test-input.txt Normal file
View File

@@ -0,0 +1,13 @@
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

View File

@@ -8,7 +8,8 @@
//Day2.Execute();
//Day3.Execute();
//Day4.Execute();
Day5.Execute();
//Day5.Execute();
Day6.Execute();
}
}
}