Обширное объединение вложенных списков с ограничением емкостиPython

Программы на Python
Ответить
Anonymous
 Обширное объединение вложенных списков с ограничением емкости

Сообщение Anonymous »

У меня есть вложенный список, для которого я хочу выполнить объединение при определенных ограничениях.
Это мой вложенный список:

Код: Выделить всё

   [[[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] , [6,0, 12,0]]. Я уже взял [0.0, 2.0].
Из [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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»