Skip to content

Single- and multi-tape Turing machine emulator. A course project on the Theory of Algorithms and Formal Languages (Oct 2022, 3d semester of university).

License

Notifications You must be signed in to change notification settings

Scorpi-ON/Taifia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Taifia

license Python versions release downloads code size

Ruff and MyPy checks UI compilation CodeQL (Python, GH Actions)

Курсовой проект по теории алгоритмов и формальных языков, продуктом которого является эмулятор одно- и многоленточной машины Тьюринга.

Скриншоты



Основные требования

  • графический интерфейс
  • основной функционал — проверка слова на соответствие языку МТ и построение графика временной сложности алгоритмов МТ
  • поддержка алгоритмов для одно- и многоленточных МТ, переключение между ними
  • интерфейс должен оставаться отзывчивым при запущенном процессе проверки слова или построения графика (многопоточность)
  • должен быть предусмотрен вывод протокола МТ и его экспорт в файл
  • должен быть предусмотрен экспорт графика временной сложности в файл

Особенности реализации

  • собственный формат алгоритма МТ и его парсер
  • множество предустановленных алгоритмов в папке src/algorithm (частично с комментариями)
  • возможность включить режим разработки, при котором алгоритмы перезагружаются при каждом запуске (позволяет удобно отлаживать алгоритм при его создании)
  • продвинутые инструменты для управления пакетами и анализа качества кода
  • покрытие юнит-тестами

Стек

  • Python — язык программирования
  • uv — пакетный менеджер
  • PyQt6 — библиотека для создания графического интерфейса
  • pyqtgraph — библиотека для построения графиков в PyQt
  • Ruff — инструмент для форматирования и анализа кода
  • MyPy — статический типизатор Python
  • pre-commit — фреймворк для настройки хуков Git

Установка и запуск

  1. Клонируйте репозиторий и перейдите в его папку.
  2. Установите пакетный менеджер uv одним из способов. Например, для Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  1. Установите зависимости:
uv sync --frozen --no-dev
  1. Теперь запускать проект можно командой:
uv run -m src

Модификация

Чтобы модифицировать проект, необходимо установить все зависимости, включая необходимые только для разработки:

uv sync
pre-commit install

Запустить форматирование кода, его линтинг и статический анализ типов можно следующими командами соответственно:

ruff format
ruff check --fix
mypy .

Обновить py-файл интерфейса после модификации ui-файла в Qt Designer можно командой:

uv run -m PyQt6.uic.pyuic -o src/ui/form.py -x src/ui/form.ui

Эта и предыдущая операции производятся автоматически при коммитах.

About

Single- and multi-tape Turing machine emulator. A course project on the Theory of Algorithms and Formal Languages (Oct 2022, 3d semester of university).

Topics

Resources

License

Stars

Watchers

Forks

Languages