Это мой вложенный список:
Код: Выделить всё
[[[0.0, 2.0], [6.0, 20.0]],
[[0.0, 5.0], [6.0, 12.0]],
[[2.0, 5.0], [20.0, 12.0]],
[[3.0, 4.0], [12.0, 6.0]],
[[0.0, 1.0], [6.0, 6.0]],
[[2.0, 3.0], [20.0, 12.0]],
[[0.0, 3.0], [6.0, 12.0]]]
Я хочу объединить пары из (одного) вложенного списка, но есть несколько ограничений.
Расширенное объединение пар с ограничением емкости.
Я хочу объединить пары из (одного) вложенного списка, но есть несколько ограничений.
p>
- Емкость. Количество ящиков (для простоты я называю это именно так) на адрес указано во втором списке.
Пример: [0.0, 2.0], [6.0, 20.0], где [0.0, 2.0] представляют индекс адреса 0, а 2, а количество коробок, которые необходимо собрать, — 6 и 20 соответственно. - Объединение можно осуществить только если...
а) ... емкость не превышена. В данном случае я установил его равным 40. Таким образом, для первых адресов 0 и 2 общая необходимая емкость равна 26.
b) ... Список адресов (маршрут) имеет адрес/индекс, который ему нужен. для объединения слева или справа.
Из [0.0, 5.0] я вижу, что 0.0 уже взято. 5.0 нет. Я могу поставить 5.0 перед 0.0, потому что 0.0 стоит в начале (или в конце).
Итак, новый объединенный список будет выглядеть так:
[[5.0, 0.0, 2.0],[12.0, 6.0, 20.0 ]]
Теперь емкость равна 38, так что все в порядке.
Я рассмотрю весь пример:Следующий элемент: [[2.0, 5.0], [20.0, 12.0]], но 2.0 и 5.0 уже находятся в одном объединенном списке, поэтому я могу пропустить этот элемент.
Следующий элемент: [[3.0, 4.0], [12.0, 6.0]], из которых 3.0 и 4.0 являются совершенно новыми. Примите это как новую пару. (Слияния пока нет).
Следующий элемент: [[0.0, 1.0], [6.0, 6.0]], из которых 0.0 уже находится в объединенном списке. 1.0 еще не занят, но 0.0 находится в середине объединенного списка. 1.0 добавить нельзя.
Отложите 1.0 в «список not_merged»
Следующий элемент: [[2.0, 3.0], [20.0, 12.0]], из который 2.0 находится в одном объединенном списке, а 3.0 - в другом. Мы могли бы объединить оба списка, поскольку 2.0 и 3.0 оба находятся в конце или начале, но это означало бы превышение емкости, равной 40.
Мы пропускаем этот список.
Следующий элемент это: [[0.0, 3.0], [6.0, 12.0]], из которых 0,0 находится в одном объединенном списке, а 3,0 — в другом, но 0,0 находится в середине объединенного списка. Пропустите этот.
В конечном итоге у нас остались следующие списки: [[5.0, 0.0, 2.0],[12.0, 6.0, 20.0]] и [[3.0, 4.0], [ 12.0, 6.0]]. Кроме того, версию 1.0 невозможно объединить, и она помещается в список not_merged.
Код должен выполнить итерацию по вложенному списку, начиная с принятия стандарта первого элемента.
Подробнее здесь: https://stackoverflow.com/questions/791 ... estriction
Мобильная версия