Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

Лабораторная работа №3

Описание проекта

Данный проект реализует различные алгоритмы и структуры данных на Python:

  • Вычисление чисел Фибоначчи (итеративно и рекурсивно)
  • Вычисление факториала (итеративно и рекурсивно)
  • Алгоритмы сортировки (bubble sort, quick sort, counting sort, radix sort, bucket sort, heap sort)
  • Структуры данных: стек и очередь

Структура проекта

.
├── src/                          # Исходный код
│   ├── __init__.py
│   ├── errors.py                 # Пользовательские исключения
│   ├── fibonacci.py              # Функции для вычисления чисел Фибоначчи
│   ├── factorial.py              # Функции для вычисления факториала
│   ├── sorting.py                # Алгоритмы сортировки
│   ├── steck on list.py          # Реализация стека
│   ├── queue on list.py          # Реализация очереди
│   └── main.py                   # Точка входа в приложение
├── tests/                        # Unit тесты
│   ├── __init__.py
│   ├── test_fibonacci.py         # Тесты для чисел Фибоначчи
│   ├── test_facctorial.py        # Тесты для факториала
│   ├── test_sorting.py           # Тесты для алгоритмов сортировки
│   ├── test_steck.py             # Тесты для стека
│   └── test_queue.py             # Тесты для очереди
├── .gitignore                    # git ignore файл
├── .pre-commit-config.yaml       # Средства автоматизации проверки кодстайла
├── uv.lock                       # зависимости моего проекта
└── README.md                     # Описание моего проекта, с описанием файлов и с титульником о том, что и какая задача

Программа запрашивает ввод данных для демонстрации работы всех алгоритмов:

  1. Число для вычисления чисел Фибоначчи
  2. Массив для сортировки
  3. Индексы для quick sort
  4. Количество buckets для bucket sort

Реализованные функции

Числа Фибоначчи (src/fibonacci.py)

  • fibo(n: int) -> int - вычисление n-го числа Фибоначчи итеративно
  • fibo_recursive(n: int) -> int - вычисление n-го числа Фибоначчи рекурсивно

Факториал (src/factorial.py)

  • factorial(n: int) -> int - вычисление факториала итеративно
  • factorial_recursive(n: int) -> int - вычисление факториала рекурсивно

Алгоритмы сортировки (src/sorting.py)

  • bubble_sort - сортировка пузырьком
  • quick_sort - быстрая сортировка
  • counting_sort - сортировка подсчетом
  • radix_sort - поразрядная сортировка
  • bucket_sort - блочная сортировка
  • heap_sort - пирамидальная сортировка

Структуры данных

Стек (src/steck_on_list.py)

Класс Stack с методами:

  • push(x) - добавить элемент в стек
  • pop() - удалить и вернуть верхний элемент
  • peek() - посмотреть верхний элемент без удаления
  • is_empty() - проверить, пуст ли стек
  • __len__() - получить размер стека

Очередь (src/queue_on_list.py)

Класс Queue с методами:

  • enqueue(x) - добавить элемент в очередь
  • dequeue() - удалить и вернуть первый элемент
  • front() - посмотреть первый элемент без удаления
  • is_empty() - проверить, пуста ли очередь
  • __len__() - получить размер очереди

Обработка ошибок

Проект использует кастомные исключения из src/errors.py:

  • DigitisNotNaturalNumberError - для некорректных входных данных (отрицательные числа, нецелые числа, строки)
  • EmptyError - для операций с пустыми структурами данных
  • BadTypeError - для смешанных типов в массивах
  • NotStringError - для недопустимых типов данных
  • BucketError - для некорректного количества buckets

Тестирование

Все функции и классы покрыты unit-тестами с использованием pytest. Тесты проверяют:

  • Корректность работы в нормальных условиях
  • Обработку краевых случаев
  • Обработку ошибок и исключений
  • Работу с разными типами данных

Памятка пользователю

Чтобы использовать код надо следовать инструкциям.

Команда просит ввести команду, доступные команды:

1) fibonacci
2) factorial
3) sorting:
        - bubble
        - quick
        - counting
        - radix
        - bucket
        - heap
4) stack:
        - push
        - pop
        - is_empty
        - peek
        - len
5) queue:
        - enqueue
        - dequeue
        - fron
        - len
        - is_empty

Далее следовать указаниям.

Спасибо за внимание! Теперь лаба готова и время идти заниматься делами в лесу...

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages