Exemplo n.º 1
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}'");
            }
        }
        public void UniversalOrbitMap_MinimumOrbitalTransfer_PartBExample1()
        {
            // Arrange
            string map = "COM)B" + Environment.NewLine +
                         "B)C" + Environment.NewLine +
                         "C)D" + Environment.NewLine +
                         "D)E" + Environment.NewLine +
                         "E)F" + Environment.NewLine +
                         "B)G" + Environment.NewLine +
                         "G)H" + Environment.NewLine +
                         "D)I" + Environment.NewLine +
                         "E)J" + Environment.NewLine +
                         "J)K" + Environment.NewLine +
                         "K)L" + Environment.NewLine +
                         "K)YOU" + Environment.NewLine +
                         "I)SAN";

            _universalOrbitMap.UpdateFromString(map);

            // Act
            (bool hasB, int minimumOrbitalTransfer) = _universalOrbitMap.MinimumOrbitalTransfer("YOU", "SAN");

            // Assert
            Assert.IsTrue(hasB, minimumOrbitalTransfer.ToString());
            Assert.AreEqual(4, minimumOrbitalTransfer);
        }