生成每个可能的整数间隔

尽管进行了研究,但仍未找到解决方案.谢谢您的帮助 !

设a和b为两个整数.我想生成所有整数的子区间,无论它们在这两个整数之间的长度如何.

例如,让a = 2和b = 5,我试图获得的结果是:

[
 [[2],[3],[4],[5]
 [[2,5]],
 [[2],[3,5]],
 [[2],[3,4],[5]],
 [[2],[3],[4,5]],
 [[2,3],[4,5]],
 [[2,3],[4],[5]],
 [[2,4],[5]]
]

谢谢您的帮助,

最好的祝福 !

解决方法:

您可以使用一个函数,该函数产生最接近a(本身是)的数字到b的间隔,然后递归产生1到b的间隔:

def intervals(a, b):
    if a > b:
        yield []
    for i in range(a, b + 1):
        for interval in intervals(i + 1, b):
            yield [[a] if a == i else [a, i], *interval]

以便:

list(intervals(2, 5))

返回:

[[[2], [3], [4], [5]],
 [[2], [3], [4, 5]],
 [[2], [3, 4], [5]],
 [[2], [3, 5]],
 [[2, 3], [4], [5]],
 [[2, 3], [4, 5]],
 [[2, 4], [5]],
 [[2, 5]]]
上一篇:合并区间


下一篇:Python中的时间间隔重叠