Refactor Day07 to extract common coordinate enqueue logic

This commit is contained in:
Sebastian Lindemeier 2025-12-08 10:03:43 +01:00
parent 629467f376
commit 92ef64fd88
1 changed files with 9 additions and 7 deletions

View File

@ -59,21 +59,23 @@ public class Day07 : IPuzzleSolver<long>
if (grid[current.x][current.y] == '^')
{
splittersHit++;
var nextLeft = (current.x, current.y - 1);
var nextRight = (current.x, current.y + 1);
if (visited.Add(nextLeft)) seen.Enqueue(nextLeft);
if (visited.Add(nextRight)) seen.Enqueue(nextRight);
CheckAndEnqueueIfNotVisited((current.x, current.y - 1));
CheckAndEnqueueIfNotVisited((current.x, current.y + 1));
}
else
{
var next = (current.x + 1, current.y);
if (visited.Add(next)) seen.Enqueue(next);
CheckAndEnqueueIfNotVisited((current.x + 1, current.y));
}
}
return splittersHit;
void CheckAndEnqueueIfNotVisited(Coordinate coordinate)
{
if (visited.Add(coordinate)) seen.Enqueue(coordinate);
}
}
private Dictionary<Coordinate, long> GetNodesTraversedWitTimelineCount(string[] grid, Coordinate current, HashSet<Coordinate> path, Dictionary<Coordinate, long> nodeCountVisited)
{
if (current.x >= grid.Length || nodeCountVisited.ContainsKey(current))