collapses overlapping ranges 인접한 범위를 결합하는 방법을 만들려고 시도하는 방법에 대한 후속 조치로.C# : 인접 범위 결합하기
기본적으로 축소 방법을 실행 한 후 5 예 1 끝낼 수 있으며, 6 (10)에 내가 1에서 10
이가, 하나 개의 범위로 사람들을 결합하고 싶은 것은 내가 온 것입니다 하지만 지금까지는별로 잘 작동하지 않습니다. 아무도 내 문제를 발견하거나 좋은 대안 솔루션을 가지고 있습니까?
public static IEnumerable<Range<T>> MergeAdjacent<T>(this IEnumerable<Range<T>> source, Func<T, T, bool> isAdjacent)
{
using (var sourceIterator = source.GetEnumerator())
{
if (!sourceIterator.MoveNext())
yield break;
var first = sourceIterator.Current;
while (sourceIterator.MoveNext())
{
var second = sourceIterator.Current;
if (isAdjacent(first.End, second.Start))
{
yield return Range.Create(first.Start, second.End);
}
else
yield return first;
first = second;
}
yield return first;
}
}
@Svish, 당신은 내 솔루션을 확인했다? 이게 니가 원하는거야? –
아직 답변을 테스트하지 못했습니다. 내가 월요일에 일하러 돌아올 때 =) – Svish