diff --git a/AoC_2025.Tests/Day07Test.cs b/AoC_2025.Tests/Day07Test.cs index 0e42824..2756e52 100644 --- a/AoC_2025.Tests/Day07Test.cs +++ b/AoC_2025.Tests/Day07Test.cs @@ -44,4 +44,24 @@ public class Day07Test Assert.Equal(53916299384254, actual); } + + [Fact] + public void Part02Again_Test_equals_40() + { + var sut = _sut as Day07; + + var actual = sut.SolvePart2Again(TestInputPath); + + Assert.Equal(40, actual); + } + + [Fact] + public void Part02Again_Prod_equals_53916299384254() + { + var sut = _sut as Day07; + + var actual = sut.SolvePart2Again(ProdInputPath); + + Assert.Equal(53916299384254, actual); + } } \ No newline at end of file diff --git a/AoC_2025/Day07.cs b/AoC_2025/Day07.cs index 1cee95a..ba31956 100644 --- a/AoC_2025/Day07.cs +++ b/AoC_2025/Day07.cs @@ -29,8 +29,15 @@ public class Day07 : IPuzzleSolver { var grid = ParsePuzzleInput(pathToPuzzleInput); var start = GetStart(grid); - var count = GetNodesTraversedWitTimelineCount(grid, start, [], []); - return count[start]; + var nodesWithCount = GetNodesTraversedWitTimelineCount(grid, start, [], []); + return nodesWithCount[start]; + } + + public long SolvePart2Again(string pathToPuzzleInput) + { + var grid = ParsePuzzleInput(pathToPuzzleInput); + var nodesWithCount = GetNodesTraversedWitTimelineCount(grid); + return nodesWithCount.Sum(); } private Coordinate GetStart(string[] grid) @@ -99,4 +106,34 @@ public class Day07 : IPuzzleSolver return nodeCountVisited; } + + private long[] GetNodesTraversedWitTimelineCount(string[] grid) + { + var numbersGrid = grid + .Select(line => line.Select(c => 0L).ToArray()) + .ToArray(); + + for (var x = 1; x < numbersGrid.Length; x++) + { + for (var y = 0; y < numbersGrid[x].Length; y++) + { + var gridValue = grid[x - 1][y]; + switch (gridValue) + { + case 'S': + numbersGrid[x][y] = 1; + break; + case '.': + numbersGrid[x][y] += numbersGrid[x - 1][y]; + break; + case '^': + numbersGrid[x][y - 1] += numbersGrid[x - 1][y]; + numbersGrid[x][y + 1] += numbersGrid[x - 1][y]; + break; + } + } + } + + return numbersGrid[^1]; + } } \ No newline at end of file