c# - 如何根据起始集将一组时间间隔转换为另一组时间间隔

标签 c# .net algorithm time intervals

我有一组称为 setTimes 的时间间隔,如下所示:

[a,d] [h,j] [k,l]

另一组时间 rawTimes 如下所示:

[a,c] [b,e] [e,g] [f,i] [k,l] [i,m]

rawTimes 需要转换为新的时间间隔,这些时间间隔位于 setTimes 指定的时间间隔内。所以结果集是:

[a,c] [b,d] [h,i] [k,l] [i,j] [k,l]

(其中 a < b < c ... < m)

基本上,结果集应该全部包含在 setTimes 集中的一个区间内。 rawTimes 中的一个间隔可能会被分成多个部分,或者它甚至永远不会进入最终集合。

目前我所做的是将 setTimes 间隔中的每个开始时间添加到名为 startTimes 的列表中,并将结束时间添加到 endTimes 中。所以:

startTimes = a , h , k
endTimes = d , j , l

但我被困在那里。我不确定从那里去哪里。

最佳答案

您可以使用 Allen's interval algebra 优雅地完成此操作

关于c# - 如何根据起始集将一组时间间隔转换为另一组时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871617/

相关文章:

c# - 在 F# 中重写 C# 代码

c# - 我应该总是调用 Page.IsValid 吗?

c# - 将 FileSavePicker 与 MessageDialog 的 IUICommand 事件一起使用

javascript - 碰撞检测不应该使物体传送

algorithm - 用于排序的成对数组(整数,字节)的紧凑数据结构?

javascript - C# .NET AES 与 JavaScript 的互操作性

c# - 在 Azure 队列存储中传递对象消息

c# - 将 System.Windows.Media.Brush 转换为 System.Drawing.Brush

c# - 向下拉列表框添加新值

algorithm - 非线性计数器