Для жизни я не могу понять, как это сделать. Мне нужно собрать непересекающиеся конечные точки нескольких наборов в диапазоне чисел с помощью Python.
Например, пользователь может ввести диапазон 10
и два набора 2
и 3
. Мне нужно получить конечные точки этих наборов в этом диапазоне, так что:
set 2 groupings: 1-2,6-7
set 3 groupings: 3-5,8-10
Диапазон, количество наборов и размер любого отдельного набора является произвольным. Я не могу выйти за пределы диапазона, поэтому нет половины подходов.
Я продолжаю думать, что для этого должна быть простая формула, но я не могу ее придумать.
Редактировать
В соответствии с запросом для примера ввода диапазона 12 и наборов 1, 2 и 3, вывод должен быть:
set 1: 1,7
set 2: 2-3,8-9
set 3: 4-6,10-12
Насколько я понимаю, я смотрю на какую-то модель аккумулятора. Примерно такой код псевдо:
for each miniRange in range:
for each set in sets:
listOfCurrSetEndpoints.append((start, end))