Данный репозиторий содержит решения лабораторных работ по предмету "Алгоритмы и Структуры Данных" (АиСД), выполненные в рамках учебной программы института ГУАП.
Решения представлены только для варианта 7. Каждая лабораторная работа находится в отдельной папке, где также содержится файл readme.md
с подробным описанием задания.
Задачи в этом проекте могли быть реализованы НАМНОГО проще, как это показано в оригинальном курсе (см. репозиторий). Однако целью данной работы было создание более абстрактных, переиспользуемых и статически безопасных решений.
Ярким примером такого подхода является ЛР3 и реализация префиксного дерева (trie). В новой версии ключи могут быть не только строками, но и любыми итерируемыми объектами, где элемент итерации должен иметь возможность сравниваться с таким же элементом.
Этого можно было бы добиться и без аннотаций типов, и без дженериков, и без протоколов. Но гарантировать статическую безопасность такого решения было бы нельзя. Именно поэтому в данном проекте использованы все эти инструменты.
Для управления проектом используется Poetry (Python >= 3.12). Несмотря на то, что обязательных зависимостей в проекте нет, рекомендуется:
- Активировать виртуальное окружение с помощью Poetry, чтобы модули и импорты работали корректно.
- В проекте используются инструменты для статического анализа и форматирования кода (
mypy
,black
и др.), которые также могут быть полезны при разработке.
-
Установите Poetry (если еще не установлен):
pip install poetry
-
Активируйте виртуальное окружение:
poetry shell
-
Установите зависимости для разработки:
poetry install