/suai-saod

Решения лабораторных работ по Алгоритмам и Структурам Данных (АиСД)

Primary LanguagePython

Лабораторные работы по АиСД

Данный репозиторий содержит решения лабораторных работ по предмету "Алгоритмы и Структуры Данных" (АиСД), выполненные в рамках учебной программы института ГУАП.

Вариант 7

Решения представлены только для варианта 7. Каждая лабораторная работа находится в отдельной папке, где также содержится файл readme.md с подробным описанием задания.

Архитектурные решения

Задачи в этом проекте могли быть реализованы НАМНОГО проще, как это показано в оригинальном курсе (см. репозиторий). Однако целью данной работы было создание более абстрактных, переиспользуемых и статически безопасных решений.

Ярким примером такого подхода является ЛР3 и реализация префиксного дерева (trie). В новой версии ключи могут быть не только строками, но и любыми итерируемыми объектами, где элемент итерации должен иметь возможность сравниваться с таким же элементом.

Этого можно было бы добиться и без аннотаций типов, и без дженериков, и без протоколов. Но гарантировать статическую безопасность такого решения было бы нельзя. Именно поэтому в данном проекте использованы все эти инструменты.

Использование Poetry

Для управления проектом используется Poetry (Python >= 3.12). Несмотря на то, что обязательных зависимостей в проекте нет, рекомендуется:

  • Активировать виртуальное окружение с помощью Poetry, чтобы модули и импорты работали корректно.
  • В проекте используются инструменты для статического анализа и форматирования кода (mypy, black и др.), которые также могут быть полезны при разработке.

Установка виртуального окружения:

  1. Установите Poetry (если еще не установлен):

    pip install poetry
  2. Активируйте виртуальное окружение:

    poetry shell
  3. Установите зависимости для разработки:

    poetry install