Refactor range combining logic for future reusability
This commit is contained in:
parent
79541d0dae
commit
fd417a6e97
|
|
@ -104,15 +104,27 @@ public class Day05 : IPuzzleSolver<long>
|
|||
{
|
||||
optimizedRanges.Add(range);
|
||||
}
|
||||
else if (IsIdInRange(range.from, lastRange) && ! IsIdInRange(range.to, lastRange))
|
||||
else if (TryCombineRanges(lastRange, range, out var combined))
|
||||
{
|
||||
optimizedRanges[^1] = (lastRange.from, range.to);
|
||||
optimizedRanges[^1] = combined;
|
||||
}
|
||||
}
|
||||
|
||||
return optimizedRanges;
|
||||
}
|
||||
|
||||
private bool TryCombineRanges(Range first, Range second, out Range combined)
|
||||
{
|
||||
if (IsIdInRange(second.from, first) && !IsIdInRange(second.to, first))
|
||||
{
|
||||
combined = (first.from, second.to);
|
||||
return true;
|
||||
}
|
||||
|
||||
combined = first;
|
||||
return false;
|
||||
}
|
||||
|
||||
private static IEnumerable<long> CountIdsInRanges(IEnumerable<Range> combinedRanges)
|
||||
{
|
||||
var countIdsInRanges = combinedRanges.Select(range => range.to - range.from + 1);
|
||||
|
|
|
|||
Loading…
Reference in New Issue