来自多个交叉间隔的不同时隙

时间:2016-12-26 17:21:57

标签: python datetime intervals slots

我在一天内有以下时段:

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:3​​0-11:00,插槽数为1

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

窗口5:12:00-13:00,广告位数为1

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

1 个答案:

答案 0 :(得分:0)

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

递归执行计算。从任何一个给定的时间间隔开始,从它开始作为第一个交叉点'并且走下去'一步。选择另一个间隔并计算前一个交点与它的交点。如果这个交叉点是非空的那么就去掉#39;另一步。否则,使用此交点返回顶部作为所考虑的间隔的交点的值。同样,如果通过的交叉路口是空的,那就去上面了。并从那里返回。从每个给定的时间间隔开始。