Python: Построитель деревьев

Python: Введение в ООП 2 сообщения
34
Студента
55%
Завершения
Обновлено: 24 февр., 18:35

src/solution.py

Вам нужно реализовать класс TreeBuilder. Этот класс призван давать возможность собирать древовидные структуры пошагово. Метод add() добавляет "лист" в текущий узел дерева:

>>> tree = TreeBuilder()
>>> tree.add('1st')

Свойство structure возвращает текущую структуру дерева:

>>> tree.structure
['1st']

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

>>> with tree:
...     tree.add('2nd')
...     with tree:
...         tree.add('3rd')
...     tree.add('4th')
...
>>> tree.structure
['1st', ['2nd', ['3rd'], '4th']]

Если в рамках контекста не было добавлено ни одного "листа", то весь узел не должен появляться в итоговой структуре:

>>> tree.structure
['1st', ['2nd', ['3rd'], '4th']]
>>> with tree:
...     pass
...
>>> tree.structure
['1st', ['2nd', ['3rd'], '4th']]  # пустой список не был добавлен!

Структура дерева выводится в виде вложенных списков.

Пример целиком:

>>> tree = TreeBuilder()
>>> tree.structure
[]
>>> tree.add('1st')
>>> tree.structure
['1st']
>>> with tree:
...     tree.add('2nd')
...     with tree:
...         tree.add('3rd')
...     tree.add('4th')
...     with tree:
...         pass
...
>>> tree.structure
['1st', ['2nd', ['3rd'], '4th']]

Для полного доступа к испытанию нужна профессиональная подписка

Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
115
курсов
892
упражнения
2241
час теории
3196
тестов

Впечатления

Ахтунг просто! Два дня бился над испытанием :D Спасибо за интересную задачку)