Esempio n. 1
0
        internal long GetPart1Solution()
        {
            string input             = File.ReadAllText(@"Inputs\Day14Input.txt");
            ResourceConverterMap map = new ResourceConverterMap(input);

            FuelConverterCalculator calculator = new FuelConverterCalculator(input, map);

            return(calculator.CalculateRequiredOre());
        }
 public FuelConverterCalculator(string input, ResourceConverterMap converterMap)
 {
     reactionTree          = new Dictionary <Resource, List <Resource> >();
     _input                = input;
     _resourceConverterMap = converterMap;
     _reactionMap          = _resourceConverterMap.Resources;
     surplusStore          = new SurplusStore();
     manufacturedResources = new Dictionary <string, long>();
 }
Esempio n. 3
0
        internal long GetPart2Solution()
        {
            string input             = File.ReadAllText(@"Inputs\Day14Input.txt");
            ResourceConverterMap map = new ResourceConverterMap(input);
            long oreCount            = 1_000_000_000_000;

            FuelConverterCalculator calculator = new FuelConverterCalculator(input, map);

            return(calculator.CalculateFuelProduced(oreCount));
        }
Esempio n. 4
0
        public void ShouldCalculatePart1ExamplesCorrectly(string relativeFilePath, int expected)
        {
            // Arrange
            string input             = File.ReadAllText(relativeFilePath);
            ResourceConverterMap map = new ResourceConverterMap(input);

            // Act
            FuelConverterCalculator calculator = new FuelConverterCalculator(input, map);
            long actual = calculator.CalculateRequiredOre();

            // Assert
            Assert.Equal(expected, actual);
        }
Esempio n. 5
0
        public void ShouldCalculatePart1SolutionCorrectly()
        {
            // Arrange
            string input             = File.ReadAllText(@"Inputs\Day14Input.txt");
            ResourceConverterMap map = new ResourceConverterMap(input);
            int expected             = 899155;

            // Act
            FuelConverterCalculator calculator = new FuelConverterCalculator(input, map);
            long actual = calculator.CalculateRequiredOre();

            // Assert
            Assert.Equal(expected, actual);
        }
Esempio n. 6
0
        public void ShouldCalculatePart2SolutionCorrectly()
        {
            // Arrange
            string input             = File.ReadAllText(@"Inputs\Day14Input.txt");
            ResourceConverterMap map = new ResourceConverterMap(input);
            long oreCount            = 1_000_000_000_000;
            long expected            = 2390226;

            // Act
            FuelConverterCalculator calculator = new FuelConverterCalculator(input, map);
            long actual = calculator.CalculateFuelProduced(oreCount);

            // Assert
            Assert.Equal(expected, actual);
        }
Esempio n. 7
0
        public void ShouldParseFirstInputForReactionCorrectly()
        {
            // Arrange
            string lines = File.ReadAllText(@"Inputs\Day14Example1Input.txt");

            // Act
            ResourceConverterMap converterMap = new ResourceConverterMap(lines);

            // Assert
            Assert.Equal(6, converterMap.Resources.Count);

            // 10 ORE => 10 A
            Assert.Equal(10, converterMap.Resources["A"].inputResources[0].Count);
            Assert.Equal("ORE", converterMap.Resources["A"].inputResources[0].Name);

            Assert.Equal(10, converterMap.Resources["A"].outputResource.Count);
            Assert.Equal("A", converterMap.Resources["A"].outputResource.Name);

            // 7 A, 1 E => 1 FUEL
            Assert.Equal(7, converterMap.Resources["FUEL"].inputResources[0].Count);
            Assert.Equal("A", converterMap.Resources["FUEL"].inputResources[0].Name);

            Assert.Equal(1, converterMap.Resources["FUEL"].inputResources[1].Count);
            Assert.Equal("E", converterMap.Resources["FUEL"].inputResources[1].Name);

            Assert.Equal(1, converterMap.Resources["FUEL"].outputResource.Count);
            Assert.Equal("FUEL", converterMap.Resources["FUEL"].outputResource.Name);

            // 7 A, 1 D => 1 E
            Assert.Equal(7, converterMap.Resources["E"].inputResources[0].Count);
            Assert.Equal("A", converterMap.Resources["E"].inputResources[0].Name);

            Assert.Equal(1, converterMap.Resources["E"].inputResources[1].Count);
            Assert.Equal("D", converterMap.Resources["E"].inputResources[1].Name);

            Assert.Equal(1, converterMap.Resources["E"].outputResource.Count);
            Assert.Equal("E", converterMap.Resources["E"].outputResource.Name);
        }