Код Middle Модули, пакеты и окружения обновлено

Порядок установки пакетов по зависимостям

Условие

Напишите install_order(deps): deps это словарь «пакет -> список пакетов, от которых он зависит». Верните порядок установки, где каждый пакет идёт после своих зависимостей. Среди готовых к установке выбирайте лексикографически меньший (детерминизм). Пакеты, которые встречаются только в списках зависимостей, тоже нужно установить. Если есть цикл, верните None.

Примеры

install_order({"django":["asgiref","sqlparse"],"drf":["django"],"asgiref":[],"sqlparse":[]}) // ["asgiref", "sqlparse", "django", "drf"]
install_order({}) // []
install_order({"a":["b"],"b":["a"]}) // null

Как подойти

Подсказки: 2
  1. Алгоритм Кана: степени захода и очередь готовых.
  2. Куча heapq даёт детерминированный порядок.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме