I tienen las siguientes:¿Fusionar intervalos de tiempo superpuestos?
public class Interval
{
DateTime Start;
DateTime End;
}
I tienen un objeto List<Interval>
que contiene múltiples intervalos. Estoy tratando de conseguir los siguientes (he usado los números para que sea fácil de entender):
[(1, 5), (2, 4), (3, 6)] ---> [(1,6)]
[(1, 3), (2, 4), (5, 8)] ---> [(1, 4), (5,8)]
Actualmente hago esto en Python de la siguiente manera:
def merge(times):
saved = list(times[0])
for st, en in sorted([sorted(t) for t in times]):
if st <= saved[1]:
saved[1] = max(saved[1], en)
else:
yield tuple(saved)
saved[0] = st
saved[1] = en
yield tuple(saved)
pero estoy tratando de lograr lo mismo en C# (LINQ sería mejor pero opcional). ¿Alguna sugerencia sobre cómo hacer esto de manera eficiente?
Para un intervalo dado, ¿se asegura de que (Inicio
@AndreCalil: Yeap. Puedo asegurar esa condición. – Legend
¿Los intervalos siempre están ordenados en la lista original? –