【问题标题】:Distinct time slots from multiple intersecting intervals来自多个相交区间的不同时隙
【发布时间】:2016-12-26 17:21:57
【问题描述】:

我在一天内有以下时间段:

1) 9:00 至 13:00

2) 9:30 至 10:30

3) 9:30 到 10:30(这里特意把这个间隔设为 2x)

4) 11:00 至 12:00

我可以在水平时间线上可视化时间段:

时间段 1)

 |--------------------------------------------|

 9:00                                       13:00

时间段 2)

      |-------------|

      9:30      10:30

时间段 3)

      |-------------|

      9:30      10:30

时间段 4)

                           |-------------|

                           11:00      12:00

我正在尝试找出一种 Python 方法,该方法将在输入上占用 N 个时隙并返回不同的时间窗口以及一个窗口与另一个窗口重叠的次数。对于上面的例子,预期的输出应该是这样的:

窗口 1:9:00 - 9:30,插槽计数 1

窗口 2:9:30 - 10:30,时段数 3

窗口 3:10:30 - 11:00,插槽计数 1

窗口 4:11:00 - 12:00,插槽计数 2

窗口 5:12:00 - 13:00,插槽计数 1

谁能指出我如何在 Python 3 中解决这个问题的正确方向?

【问题讨论】:

  • 提示:(1)按开始时间排序区间; (2) 对于每个区间,如果与下一个区间相交,则合并它们,并计算合并次数。

标签: python datetime intervals slots


【解决方案1】:

使用sympy sets: intervals 中的工具可以更方便地操作间隔。这是第一部分。

递归执行计算。从任何一个给定的间隔开始,从它作为“第一个交叉点”开始,然后“向下”走一步。选择另一个区间并计算前一个交点与它的交点。如果此交叉点非空,则“向下”再走一步。否则,以该交点作为所考虑的区间的交点的值返回顶部。同样,如果通过的路口是空的,则“向上”并从那里返回。从每个给定的时间间隔开始。

【讨论】:

    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2011-07-05
    • 2012-02-04
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多