diff --git a/AdventOfCode.HelperClasses/AdventOfCode.HelperClasses.csproj b/AdventOfCode.HelperClasses/AdventOfCode.HelperClasses.csproj new file mode 100644 index 0000000..17b910f --- /dev/null +++ b/AdventOfCode.HelperClasses/AdventOfCode.HelperClasses.csproj @@ -0,0 +1,9 @@ + + + + net9.0 + enable + enable + + + diff --git a/AdventOfCode.HelperClasses/IntArrayEqualityComparer.cs b/AdventOfCode.HelperClasses/IntArrayEqualityComparer.cs new file mode 100644 index 0000000..1d37f9b --- /dev/null +++ b/AdventOfCode.HelperClasses/IntArrayEqualityComparer.cs @@ -0,0 +1,24 @@ +namespace AdventOfCode.HelperClasses; + +public class IntArrayEqualityComparer : IEqualityComparer +{ + public bool Equals(int[]? x, int[]? y) + { + if (x is null || y is null || x.Length != y.Length) return false; + + return !x.Where((t, i) => t != y[i]).Any(); + } + + public int GetHashCode(int[] obj) + { + var result = 17; + foreach (var t in obj) + { + unchecked + { + result = result * 23 + t; + } + } + return result; + } +} \ No newline at end of file diff --git a/AdventOfCode.sln b/AdventOfCode.sln index 9926868..7ca1055 100644 --- a/AdventOfCode.sln +++ b/AdventOfCode.sln @@ -12,6 +12,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvenOfCode.Contracts", "Ad EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.Extensions", "AdventOfCode.Extensions\AdventOfCode.Extensions.csproj", "{1466A0F6-7C88-47FF-B8F8-FF30368E26DC}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.HelperClasses", "AdventOfCode.HelperClasses\AdventOfCode.HelperClasses.csproj", "{D47175BB-5AD6-43A8-9287-FF5E6F1816E3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -38,6 +40,10 @@ Global {1466A0F6-7C88-47FF-B8F8-FF30368E26DC}.Debug|Any CPU.Build.0 = Debug|Any CPU {1466A0F6-7C88-47FF-B8F8-FF30368E26DC}.Release|Any CPU.ActiveCfg = Release|Any CPU {1466A0F6-7C88-47FF-B8F8-FF30368E26DC}.Release|Any CPU.Build.0 = Release|Any CPU + {D47175BB-5AD6-43A8-9287-FF5E6F1816E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D47175BB-5AD6-43A8-9287-FF5E6F1816E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D47175BB-5AD6-43A8-9287-FF5E6F1816E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D47175BB-5AD6-43A8-9287-FF5E6F1816E3}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {4F395AE3-DABB-4546-A4D0-5A62425FE168} = {05EBAA1C-B33B-4AFE-8635-A58D7CA509A7} diff --git a/AoC_2025/AoC_2025.csproj b/AoC_2025/AoC_2025.csproj index badaa42..a43acc8 100644 --- a/AoC_2025/AoC_2025.csproj +++ b/AoC_2025/AoC_2025.csproj @@ -9,6 +9,7 @@ + diff --git a/AoC_2025/Day10.cs b/AoC_2025/Day10.cs index 9ab5f82..707b77d 100644 --- a/AoC_2025/Day10.cs +++ b/AoC_2025/Day10.cs @@ -7,13 +7,14 @@ using System.IO; using System.Linq; using AdvenOfCode.Contracts; using AdventOfCode.Extensions; +using AdventOfCode.HelperClasses; using Microsoft.Z3; namespace AoC_2025; public class Day10 : IPuzzleSolver { - private (uint lamps, uint[] buttons, int[] joltages)[] ParsePuzzleInput(string path) + private (uint lamps, uint[] buttons)[] ParsePuzzleInput(string path) { var puzzleInput = File.ReadAllLines(path) .Where(line => !string.IsNullOrWhiteSpace(line)) @@ -41,16 +42,8 @@ public class Day10 : IPuzzleSolver .Select(lampIndexes => lampIndexes.Aggregate((uint)0L, (acc, lampIndex) => acc | ((uint)1 << lampIndex))) .ToArray()) .ToArray(); - var joltages = puzzleInput - .Select(input => input.joltages) - .Select(joltage => joltage - .Split(',', StringSplitOptions.RemoveEmptyEntries) - .Select(jolt => int.Parse(jolt)) - .ToArray()) - .ToArray(); var res = lamps .Zip(buttons, (lamp, button) => (lamp, button)) - .Zip(joltages, (bl, joltage) => (bl.lamp, bl.button, joltage)) .ToArray(); return res; } @@ -272,27 +265,4 @@ public class Day10 : IPuzzleSolver var answer = answerExpression is IntNum number ? number.Int64 : 0; return answer; } -} - -public class IntArrayEqualityComparer : IEqualityComparer -{ - public bool Equals(int[]? x, int[]? y) - { - if (x is null || y is null || x.Length != y.Length) return false; - - return !x.Where((t, i) => t != y[i]).Any(); - } - - public int GetHashCode(int[] obj) - { - var result = 17; - foreach (var t in obj) - { - unchecked - { - result = result * 23 + t; - } - } - return result; - } } \ No newline at end of file