Add Day 06 solution, needs cleanup later
This commit is contained in:
+14
-8
@@ -99,15 +99,14 @@ public class Day05 : IPuzzleSolver<long>
|
||||
var optimizedRanges = new List<Range>(ranges.Length) { ranges[0] };
|
||||
foreach (var range in ranges)
|
||||
{
|
||||
var lastRange = optimizedRanges[^1];
|
||||
if (range.from > lastRange.to)
|
||||
{
|
||||
optimizedRanges.Add(range);
|
||||
}
|
||||
else if (TryCombineRanges(lastRange, range, out var combined))
|
||||
if (TryCombineRanges(optimizedRanges[^1], range, out var combined))
|
||||
{
|
||||
optimizedRanges[^1] = combined;
|
||||
}
|
||||
else
|
||||
{
|
||||
optimizedRanges.Add(range);
|
||||
}
|
||||
}
|
||||
|
||||
return optimizedRanges;
|
||||
@@ -115,11 +114,18 @@ public class Day05 : IPuzzleSolver<long>
|
||||
|
||||
private bool TryCombineRanges(Range first, Range second, out Range combined)
|
||||
{
|
||||
if (IsIdInRange(second.from, first) && !IsIdInRange(second.to, first))
|
||||
if (IsIdInRange(second.from, first))
|
||||
{
|
||||
combined = (first.from, second.to);
|
||||
var isEndInRange = IsIdInRange(second.to, first);
|
||||
combined = isEndInRange ? first : (first.from, second.to);
|
||||
return true;
|
||||
}
|
||||
// if (IsIdInRange(first.from, second))
|
||||
// {
|
||||
// var isEndInRange = IsIdInRange(first.to, second);
|
||||
// combined = isEndInRange ? second : (second.from, first.to);
|
||||
// return true;
|
||||
// }
|
||||
|
||||
combined = first;
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user