Psudo代码:
timelines = [
(range(<from>, <to>), range(<from>, <to>)),
(range(<from>, <to>), range(<from>, <to>)),
(range(<from>, <to>), range(<from>, <to>)),
]
<from>
和<to>
表示日期时间对象
此“图片”在“交集”之后显示了我需要计算的值:
^{pr2}$
如何计算这些交叉口?在
我用python编写代码,但是欢迎用任何编程语言来回答,
因为我只需要理解算法
Tags:
步骤0:为方便起见,创建一个
Range
类:步骤1:创建一个计算两个范围的交集的函数。此函数适用于包含两个可比较点的任何对象:
^{pr2}$第2步:创建一个函数,通过尝试所有可能的组合,找到两组范围的所有交点。在
步骤3:^{} 使用
intersect_two
的范围集列表:为了简单起见,我使用整数,但它应该与
datetime
对象一样好:如果只需要伪代码,一种算法是:
对于实现交叉口,有几种不同的方法。一种方法是使用set函数,尽管必须转换为set,如果不希望将set作为输出,则必须将其转换回:
intersections = intersections.intersection(timeline)
。另一种方法是列表理解:intersections = [time_point for time_point in intersections if time_point in timeline]
以下是我对@Felk答案的实现:
相关问题 更多 >
编程相关推荐