Порядок списков Python
У меня есть три списка (контейнер *), и они должны выдвинуть один (первый) элемент за один раз. Какой список будет отображать элемент, зависит от значения (tF*), наименьшее значение отправляется первым, но если значения равны, то оно идет в алфавитном порядке по именам списка (container1 отправляет первым), список, который переходит в отправка - это те, в которых есть элементы. Кроме того, tF * рассчитывается для каждого элемента, поэтому, если есть два элемента "1", то первый всплывает один, а в следующем раунде (когда приходят "2") - другой.
На самом деле это симуляция честной очереди, которую используют маршрутизаторы, когда у них больше входящих потоков... Я просто не могу понять, какая часть выгрузки (отправки), любая помощь приветствуется.
вот код, который я получил до сих пор (Python)
flow1 = [1,2,4,6]
flow2 = [2,6]
flow3 = [1,2,3,5,6]
container1 = []
container2 = []
container3 = []
t = 1
tA=1
tF1 = 0
tF2 = 0
tF3 = 0
counter_tA = 0
while flow1[0] or flow2[0] or flow3[0] or container1[0] or container2[0] or container3[0]:
#from flow to the container
if flow1[0] == t:
container1.append(flow1.pop(0))
tF1 = max(tF1, tA)+1
counter_tA += 1
if flow2[0] == t:
container2.append(flow2.pop(0))
tF2 = max(tF2, tA)+1
counter_tA += 1
if flow3[0] == t:
container3.append(flow3.pop(0))
tF3 = max(tF3, tA)+1
counter_tA += 1
#sending
send = min(tF1, min(tF2, tF3))
if tF1 == tF2 == tF3:
container1.pop()
if tF1 == (tF2 or tF3):
tA = tA + 1/counter_tA
counter_tA =0
t+=1