From 31caf429caca9a94d65b4c3d5f9ff3b477c7fd09 Mon Sep 17 00:00:00 2001 From: Sebastian Lindemeier Date: Fri, 5 Dec 2025 09:04:27 +0100 Subject: [PATCH] Refactor Day04 to use Index() extension method --- AoC_2025.Tests/Day05Test.cs | 18 +++++++++++++++++- AoC_2025/Day04.cs | 9 +++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/AoC_2025.Tests/Day05Test.cs b/AoC_2025.Tests/Day05Test.cs index 80d9f28..f96ecd7 100644 --- a/AoC_2025.Tests/Day05Test.cs +++ b/AoC_2025.Tests/Day05Test.cs @@ -4,7 +4,7 @@ namespace AoC_2025.Tests; public class Day05Test { - private readonly IPuzzleSolver _sut; + private readonly Day05 _sut; private static readonly string rootPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); private readonly string TestInputPath = @$"{rootPath}\AoC-PuzzleInputs\2025\Test\day05.txt"; private readonly string ProdInputPath = @$"{rootPath}\AoC-PuzzleInputs\2025\Prod\day05.txt"; @@ -44,4 +44,20 @@ public class Day05Test Assert.Equal(369761800782619, actual); } + + [Fact] + public void Part02Again_Test_equals_14() + { + var actual = _sut.SolvePart2Again(TestInputPath); + + Assert.Equal(14, actual); + } + + [Fact] + public void Part02Again_Prod_equals_369761800782619() + { + var actual = _sut.SolvePart2Again(ProdInputPath); + + Assert.Equal(369761800782619, actual); + } } \ No newline at end of file diff --git a/AoC_2025/Day04.cs b/AoC_2025/Day04.cs index 91b34b2..77f54a2 100644 --- a/AoC_2025/Day04.cs +++ b/AoC_2025/Day04.cs @@ -55,16 +55,17 @@ public class Day04 : IPuzzleSolver private HashSet GetRollCoordinates(IEnumerable paperrollGrid) { var coordinates = paperrollGrid - .SelectMany((gridLine, xIndex) => GetCoordinates(gridLine, xIndex)) + .Index() + .SelectMany(indexedLine => GetCoordinates(indexedLine.Item, indexedLine.Index)) .ToHashSet(); return coordinates; } private IEnumerable GetCoordinates(string gridLine, int xIndex) { - var indexedCharacters = gridLine.Select((character, yIndex) => (character, yIndex)); - var validRolls = indexedCharacters.Where(tuple => tuple.character == '@'); - var rollCoordinates = validRolls.Select(tuple => (xIndex, tuple.yIndex)); + var indexedCharacters = gridLine.Index(); + var validRolls = indexedCharacters.Where(tuple => tuple.Item == '@'); + var rollCoordinates = validRolls.Select(tuple => (xIndex, tuple.Index)); return rollCoordinates; }