Refactor Day07 to extract node visited count update logic
This commit is contained in:
+12
-8
@@ -71,12 +71,7 @@ public class Day07 : IPuzzleSolver<long>
|
|||||||
{
|
{
|
||||||
if (current.x >= grid.Length || nodeCountVisited.ContainsKey(current))
|
if (current.x >= grid.Length || nodeCountVisited.ContainsKey(current))
|
||||||
{
|
{
|
||||||
var addAmount = nodeCountVisited.GetValueOrDefault(current, 1);
|
nodeCountVisited = UpdateNodeVisitedCounts(current, path, nodeCountVisited);
|
||||||
foreach (var node in path)
|
|
||||||
{
|
|
||||||
nodeCountVisited[node] += addAmount;
|
|
||||||
}
|
|
||||||
|
|
||||||
return nodeCountVisited;
|
return nodeCountVisited;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,10 +84,19 @@ public class Day07 : IPuzzleSolver<long>
|
|||||||
var resRight = GetNodesTraversedWitTimelineCount(grid, (current.x, current.y + 1), [..path], resLeft);
|
var resRight = GetNodesTraversedWitTimelineCount(grid, (current.x, current.y + 1), [..path], resLeft);
|
||||||
return resRight;
|
return resRight;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
var res = GetNodesTraversedWitTimelineCount(grid, (current.x + 1, current.y), [..path], nodeCountVisited);
|
var res = GetNodesTraversedWitTimelineCount(grid, (current.x + 1, current.y), [..path], nodeCountVisited);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Dictionary<Coordinate, long> UpdateNodeVisitedCounts(Coordinate current, HashSet<Coordinate> path, Dictionary<Coordinate, long> nodeCountVisited)
|
||||||
|
{
|
||||||
|
var addAmount = nodeCountVisited.GetValueOrDefault(current, 1);
|
||||||
|
foreach (var node in path)
|
||||||
|
{
|
||||||
|
nodeCountVisited[node] += addAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nodeCountVisited;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user