Exemplo n.º 1
0
        private void btn_day6_Click(object sender, RoutedEventArgs e)
        {
            UniversalOrbitMap map = new UniversalOrbitMap();

            Console.WriteLine("Task 1 answer = " + map.solveTask1());
            Console.WriteLine("Task 2 answer = " + map.solveTask2());
        }
Exemplo n.º 2
0
        private static void Day06_B()
        {
            const string defaultFilename = "UniversalOrbitMap.txt";

            try
            {
                string fullFilename = Path.Combine(Environment.CurrentDirectory, "Day06", defaultFilename);
                Console.WriteLine();
                Console.WriteLine($"Loading universal orbit map from '{fullFilename}'...");
                Console.WriteLine();

                var factory = new Factory();
                UniversalOrbitMap orbitMap = factory.CreateUniversalOrbitMapFromFile(fullFilename);
                Console.WriteLine($"There are #{orbitMap.Objects.Count} space objects defined on the map.");
                Console.WriteLine();

                int numberOfOrbits = orbitMap.NumberOfOrbits;
                Console.WriteLine($"There #{numberOfOrbits} direct or indirect defined orbits.");
                Console.WriteLine();

                string spaceObject1 = "YOU";
                string spaceObject2 = "SAN";
                (bool hasB, int minimumOrbitalTransfer) = orbitMap.MinimumOrbitalTransfer(spaceObject1, spaceObject2);
                Console.WriteLine($"The minimum orbital transfer(s) to go from '{spaceObject1}' to '{spaceObject2}' is(are) #{minimumOrbitalTransfer} [found: '{hasB}'].");
                Console.WriteLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"An error occured '{ex.Message}'.{Environment.NewLine}Details: '{ex}'");
            }
        }
Exemplo n.º 3
0
        // == == == == == Puzzle 2 == == == == ==
        public static string Puzzle2(string input)
        {
            var orbits = input.Split(Environment.NewLine);
            var uom    = new UniversalOrbitMap(orbits);

            return(uom.FindMinimumOrbitalTransfersRequired("YOU", "SAN").ToString());
        }
Exemplo n.º 4
0
        // == == == == == Puzzle 1 == == == == ==
        public static string Puzzle1(string input)
        {
            var orbits = input.Split(Environment.NewLine);
            var uom    = new UniversalOrbitMap(orbits);

            return(uom.CalculateTotalNumberOfOrbits().ToString());
        }
Exemplo n.º 5
0
        public async Task Part2_DetailedExample()
        {
            // Arrange
            var subject = new UniversalOrbitMap();
            var input   =
                @"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";

            // Act
            var result = await subject.SolvePart2Async(input.ToMemoryStream());

            // Assert
            Assert.Equal("4", result);
        }
Exemplo n.º 6
0
        private static void Day06_A()
        {
            const string defaultFilename = "UniversalOrbitMap.txt";

            try
            {
                string fullFilename = Path.Combine(Environment.CurrentDirectory, "Day06", defaultFilename);
                Console.WriteLine();
                Console.WriteLine($"Loading universal orbit map from '{fullFilename}'...");
                Console.WriteLine();

                var factory = new Factory();
                UniversalOrbitMap orbitMap = factory.CreateUniversalOrbitMapFromFile(fullFilename);
                Console.WriteLine($"There are #{orbitMap.Objects.Count} space objects defined on the map.");
                Console.WriteLine();

                int numberOfOrbits = orbitMap.NumberOfOrbits;
                Console.WriteLine($"There #{numberOfOrbits} direct or indirect defined orbits.");
                Console.WriteLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"An error occured '{ex.Message}'.{Environment.NewLine}Details: '{ex}'");
            }
        }
Exemplo n.º 7
0
        public void PuzzleOne()
        {
            var lines = File.ReadAllLines("tests/y2019/Day6.Input.txt");
            var map   = UniversalOrbitMap.CreateMapFromLines(lines);

            Assert.Equal(268504, map.CountOrbits());
        }
Exemplo n.º 8
0
        public void PuzzleTwo()
        {
            var lines = File.ReadAllLines("tests/y2019/Day6.Input.txt");
            var map   = UniversalOrbitMap.CreateMapFromLines(lines);
            var path  = map.GetPathBetween("SAN", "YOU");

            Assert.Equal(409, path.Count() - 1);
        }
Exemplo n.º 9
0
        public void Test2()
        {
            string input = "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";

            string[] inputs = input.Split(',');

            UniversalOrbitMap orbitMap = new UniversalOrbitMap(inputs);

            Assert.AreEqual(4, orbitMap.OrbitTransfersRequired("YOU", "SAN"));
        }
Exemplo n.º 10
0
        public void UniversalOrbitMap_AllPlanetsOf_Works()
        {
            var orbits          = UniversalOrbitMap.Parse(testOrbits);
            var allPlanetsQuery =
                from planet in orbits.AllPlanetsOf("L") select planet;

            Assert.Equal(
                new string[] { "K", "J", "E", "D", "C", "B", "COM" },
                allPlanetsQuery.ToArray()
                );
        }
Exemplo n.º 11
0
        public void UniversalOrbitMap_Parse_Works()
        {
            var orbits = UniversalOrbitMap.Parse(testOrbits);

            Assert.Equal("COM", orbits.PlanetOf("B"));
            Assert.Equal("E", orbits.PlanetOf("J"));
            Assert.Equal("E", orbits.PlanetOf("F"));
            Assert.Equal(new HashSet <string> {
                "E", "I"
            }, orbits.MoonsOf("D"));
        }
        public void TotalNumberOfDirectAndIndirectOrbits()
        {
            var map = new List <string>
            {
                "COM)B", "B)C", "C)D", "D)E", "E)F", "B)G", "G)H", "D)I", "E)J", "J)K", "K)L"
            };

            var universalOrbitMap = new UniversalOrbitMap(map);
            var total             = universalOrbitMap.GetTotalNumberDirectAndIndirectOrbits();

            Assert.AreEqual(42, total);
        }
Exemplo n.º 13
0
        public async Task Part1_ConcrateExcercise()
        {
            // Arrange
            var subject = new UniversalOrbitMap();

            using var input = File.OpenRead("Day6/Input.txt");

            // Act
            var result = await subject.SolvePart1Async(input);

            // Assert
            Assert.Equal("160040", result);
        }
Exemplo n.º 14
0
        public void Test1()
        {
            string input = "COM)B,B)C,C)D,D)E,E)F,B)G,G)H,D)I,E)J,J)K,K)L";

            string[] inputs = input.Split(',');

            UniversalOrbitMap orbitMap = new UniversalOrbitMap(inputs);

            Assert.AreEqual(3, orbitMap.ObjectsInSpace["D"].GetOrbits());
            Assert.AreEqual(7, orbitMap.ObjectsInSpace["L"].GetOrbits());
            Assert.AreEqual(0, orbitMap.ObjectsInSpace["COM"].GetOrbits());

            Assert.AreEqual(42, orbitMap.GetTotalOrbits());
        }
Exemplo n.º 15
0
        public void UniversalOrbitMap_Add_Works()
        {
            var orbits = new UniversalOrbitMap();

            orbits.Add("A", "B");
            orbits.Add("A", "C");

            Assert.Equal("A", orbits.PlanetOf("B"));
            Assert.Equal("A", orbits.PlanetOf("C"));

            Assert.Equal(new HashSet <string> {
                "B", "C"
            }, orbits.MoonsOf("A"));
        }
Exemplo n.º 16
0
        private Tree <String> CreateNextSample()
        {
            var lines = new[] {
                "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"
            };

            return(UniversalOrbitMap.CreateMapFromLines(lines));
        }
Exemplo n.º 17
0
        public void TreeConstruct()
        {
            var lines = new[] {
                "COM)B",
                "B)C",
                "C)D",
                "D)E",
                "E)F",
                "B)G",
                "G)H",
                "D)I",
                "E)J",
                "J)K",
                "K)L",
            };

            var map = UniversalOrbitMap.CreateMapFromLines(lines);

            Assert.Equal(42, map.CountOrbits());
        }
Exemplo n.º 18
0
        public async Task Part1_DetailedExampleNotOrderedInput()
        {
            // Arrange
            var subject = new UniversalOrbitMap();
            var input   =
                @"G)H
B)C
C)D
D)E
COM)B
E)F
J)K
D)I
E)J
B)G
K)L";

            // Act
            var result = await subject.SolvePart1Async(input.ToMemoryStream());

            // Assert
            Assert.Equal("42", result);
        }
Exemplo n.º 19
0
 public void TestInitialize()
 {
     _universalOrbitMap = new UniversalOrbitMap();
 }
Exemplo n.º 20
0
        public void UniversalOrbitMap_Checksum_Works()
        {
            var orbits = UniversalOrbitMap.Parse(testOrbits);

            Assert.Equal(42, orbits.Checksum());
        }
Exemplo n.º 21
0
 public void TestCleanup()
 {
     _universalOrbitMap = null;
 }
Exemplo n.º 22
0
        public void UniversalOrbitMap_MinimalTransfersCount_Works()
        {
            var orbits = UniversalOrbitMap.Parse(testOrbits2);

            Assert.Equal(4, orbits.MinimalTransfersCount());
        }
 public NavSystem()
 {
     _universalOrbitMap = new UniversalOrbitMap(DownloadMap());
 }