Refactor Day10 to rename variables for consistency and add `.ToArray()` in `ParsePuzzleInputUnoptimized` to optimize LINQ evaluation

This commit is contained in:
Sebastian Lindemeier 2025-12-12 11:54:39 +01:00
parent 801b96de1d
commit d92293f631
1 changed files with 5 additions and 4 deletions

View File

@ -120,7 +120,8 @@ public class Day10 : IPuzzleSolver<long>
{ {
var instructions = ParsePuzzleInputUnoptimized(pathToPuzzleInput); var instructions = ParsePuzzleInputUnoptimized(pathToPuzzleInput);
var minCounts = instructions var minCounts = instructions
.Select(instruction => GetMinCountButtonPressesForJoltageLevels(instruction.joltages, instruction.buttons)); .Select(instruction => GetMinCountButtonPressesForJoltageLevels(instruction.joltages, instruction.buttons))
.ToArray();
return minCounts.Sum(); return minCounts.Sum();
} }
@ -193,10 +194,10 @@ public class Day10 : IPuzzleSolver<long>
.Zip(targetJoltages, (pJolt, tJolt) => (pJolt % 2) == (tJolt % 2)) .Zip(targetJoltages, (pJolt, tJolt) => (pJolt % 2) == (tJolt % 2))
.All(isEqual => isEqual)) .All(isEqual => isEqual))
.ToArray(); .ToArray();
foreach (var (joltageLevel, buttonPresses) in patternsToCheck) foreach (var (joltageLevels, cost) in patternsToCheck)
{ {
var nextPattern = targetJoltages.Zip(joltageLevel, (jolts, level) => (jolts - level) / 2).ToArray(); var nextPattern = targetJoltages.Zip(joltageLevels, (jolts, level) => (jolts - level) / 2).ToArray();
var resultNext = 2 * GetMinCountInternal(nextPattern, patternCosts, memory) + buttonPresses; var resultNext = 2 * GetMinCountInternal(nextPattern, patternCosts, memory) + cost;
if (resultNext < minCount) if (resultNext < minCount)
{ {
minCount = resultNext; minCount = resultNext;