- Вычисление чисел Фибоначчи (итеративно и рекурсивно)
- Вычисление факториала (итеративно и рекурсивно)
- Алгоритмы сортировки (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 # Описание моего проекта, с описанием файлов и с титульником о том, что и какая задача
- Число для вычисления чисел Фибоначчи
- Массив для сортировки
- Индексы для quick sort
- Количество buckets для bucket sort
fibo(n: int) -> int- вычисление n-го числа Фибоначчи итеративноfibo_recursive(n: int) -> int- вычисление n-го числа Фибоначчи рекурсивно
factorial(n: int) -> int- вычисление факториала итеративноfactorial_recursive(n: int) -> int- вычисление факториала рекурсивно
bubble_sort- сортировка пузырькомquick_sort- быстрая сортировкаcounting_sort- сортировка подсчетомradix_sort- поразрядная сортировкаbucket_sort- блочная сортировкаheap_sort- пирамидальная сортировка
Класс Stack с методами:
push(x)- добавить элемент в стекpop()- удалить и вернуть верхний элементpeek()- посмотреть верхний элемент без удаленияis_empty()- проверить, пуст ли стек__len__()- получить размер стека
Класс 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