LLayerSedge
Сценарии

Сценарии работы с кодом · Топологические поколения зависимостей

03
Вокруг ваших задач

Конкретная отправная точка

Разбейте до 64 узлов зависимостей на отсортированные топологические поколения по множествам индексов предпосылок. Проверьте независимые узлы и пустой ввод, отклоните циклы, зависимости от себя и неверные индексы, сохранив исходные множества.

01

Откройте контекст

Выберите папку проекта и обозначьте нужные файлы или поведение.

02

Опишите изменение

Укажите входные данные, ожидаемый результат и границы, которые нужно сохранить.

03

Изучите работу

Проверьте предлагаемые изменения и команды, прежде чем полагаться на результат.

04

Проверьте результат

Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.

Топологические поколения зависимостей

Конкретная отправная точка
def dependency_layers(dependencies):
    if type(dependencies) is not list or len(dependencies) > 64:
        raise ValueError("layers.input")
    count = len(dependencies)
    if any(type(row) is not set or any(type(v) is not int or not 0 <= v < count for v in row) for row in dependencies):
        raise ValueError("layers.edge")
    pending, done, layers = set(range(count)), set(), []
    while pending:
        ready = sorted(i for i in pending if dependencies[i] <= done)
        if not ready:
            raise ValueError("layers.cycle")
        layers.append(ready)
        pending.difference_update(ready)
        done.update(ready)
    return layers

Пример — отправная точка для реального проекта, а не утверждение, что сгенерированный код уже протестирован. Адаптируйте пути, зависимости и ожидаемое поведение к своему приложению.

Рабочая среда с ИИ для кода

Здесь начинается ваше следующее изменение.

Скачать для Windows ↗