Код 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
- Алгоритм Кана: степени захода и очередь готовых.
- Куча
heapqдаёт детерминированный порядок.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.