Нашли ошибку?

Порядок прохождения курсов

СложнаяРеализацияГлава 6

#графы#очереди#топологическая сортировкаid: ga-study-order

Учебный план: prereqs[course] — список курсов, которые нужно пройти до course. Напишите study_order(prereqs): функция возвращает список всех курсов (и ключей, и упомянутых в требованиях) в порядке, при котором каждый пререквизит идёт раньше курса. Если это невозможно из-за циклической зависимости, функция возвращает None. Подходит любой допустимый порядок.

Пример

study_order({
    "Алгоритмы": ["Python", "Дискретка"],
    "Python": [],
    "ML": ["Алгоритмы", "Статистика"],
})
# например ["Python", "Дискретка", "Статистика", "Алгоритмы", "ML"]

study_order({"A": ["B"], "B": ["A"]})   # None

Ограничения

Решение

def study_order(prereqs: dict[str, list[str]]) -> list[str] | None:
    """Порядок курсов, в котором пререквизиты идут раньше, или None при цикле."""
    # ваш код
    raise NotImplementedError

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 study_order.py — тесты те же, результат покажет ✓ / ✗ и итог.