У меня есть список интервалов (время windows), в которых работают машины, например, 0-14, 22-38, 46-62 и др. c. в часах.
Различные операции, которые я выполняю, имеют различную продолжительность, например. 1 час, 5 часов, 7 часов, 32 часа и др. c.
То, что я хочу сделать, это для каждого доступного часа, чтобы сказать, какова продолжительность, и вернуть все уникальные значения. Операциям разрешено превышать интервал, но если это так, они должны продолжаться в следующем доступном интервале, и необходимо добавить время простоя:
Пример:
Время windows: [[1-4], [9-13], [15-21], ...]
Продолжительность: 4
часы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
4 8 8 8 x x x x 4 4 5 5 5 x 4 4 4 4 x x x
(x означает, что процесс не может начаться в этот период времени ( время простоя машины))
Возврат: [4, 5, 8]
РЕДАКТИРОВАТЬ: я пытался извлечь часы, которые имеют право на продолжительность 4 и идентифицировал те, которые превышают интервал, но я Я не уверен, как добавить время ... Еще одна проблема, которую я вижу, это то, что я делаю, если он проходит не только первый интервал, но и следующий? например, с продолжительностью 32
часов ...
duration = 4
unique_values = [duration]
for i in range(max(interval_list)[1]): #Get max hour
for j in interval_list: #For each interval
if i >= j[0] and i <= j[1]: #If hour is in interval
if i + duration <= j[1]: #If hour + duration <= interval upperbound
unique_values.append(duration) #Add duration
else: #Else if duration exceed interval... :-(
pass
else:
pass