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>(); }
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)); }
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); }
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); }
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); }
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); }