Skip to main content

Education Turing Machine simulator in Python

Project description

py-turing

A simple and extensible Turing Machine simulator written in Python, designed for learning, experimentation, and educational purposes.

This project allows users to define states, transitions, and tapes to simulate the behavior of a deterministic Turing Machine, one of the fundamental models in the theory of computation.


๐Ÿ“š About

A Turing Machine is an abstract computational model introduced by Alan Turing in 1936. It is widely used in computer science to study the limits of computation and algorithm design.

py-turing provides a Python implementation that enables:

  • Simulation of Turing Machines
  • Creation of custom transition rules
  • Step-by-step computation
  • Experimentation with theoretical algorithms

This project is intended for:

  • Computer Science students
  • Theory of Computation courses
  • Developers interested in computational models
  • Educational demonstrations

โœจ Features

  • Deterministic Turing Machine simulation
  • Customizable tape input
  • Configurable states and transitions
  • Step-by-step execution
  • Simple and modular Python architecture
  • Easy to extend and modify
  • CLI-ready structure

๐Ÿ“‚ Project Structure

py-turing/
โ”‚
โ”œโ”€โ”€ pyproject.toml
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ LICENSE
โ”œโ”€โ”€ .gitignore
โ”‚
โ”œโ”€โ”€ src/
    โ””โ”€โ”€ pyturing/
        โ”œโ”€โ”€ __init__.py
        โ”‚
        โ”œโ”€โ”€ machine/
        โ”‚   โ”œโ”€โ”€ __init__.py
        โ”‚   โ”œโ”€โ”€ turing_machine.py
        โ”‚   โ”œโ”€โ”€ tape.py
        โ”‚   โ””โ”€โ”€ states.py
        โ”‚
        โ”œโ”€โ”€ alphabet/
        โ”‚   โ”œโ”€โ”€ __init__.py
        โ”‚   โ”œโ”€โ”€ symbol.py
        โ”‚   โ”œโ”€โ”€ alphabet.py
        โ”‚   โ””โ”€โ”€ tape_alphabet.py
        โ”‚
        โ””โ”€ transition/
            โ”œโ”€โ”€ __init__.py
            โ”œโ”€โ”€ transition.py
            โ”œโ”€โ”€ transition_function.py
            โ””โ”€โ”€ direction.py

๐Ÿงช Example Turing Machines

Examples you can implement using py-turing:

  • Binary increment machine
  • Palindrome checker
  • Unary addition
  • Even/Odd binary checker
  • String copying machine

๐Ÿงฉ How It Works

A Turing Machine consists of:

  • Tape โ€“ infinite memory divided into cells
  • Head โ€“ reads and writes symbols on the tape
  • States โ€“ machine configuration states
  • Transition Function โ€“ rules that determine the next action

Each step follows this rule:

(Current State, Read Symbol) โ†’ (Next State, Write Symbol, Move Direction)

Where direction can be:

  • L โ†’ Move left
  • R โ†’ Move right

๐Ÿค Contributing

Contributions are welcome!

To contribute:

  1. Fork the repository
  2. Create a new branch
git checkout -b feature/my-feature
  1. Make your changes
  2. Commit your work
git commit -m "Add new feature"
  1. Push to your fork
git push origin feature/my-feature
  1. Open a Pull Request

๐Ÿ“œ License

This project is licensed under the MIT License.


๐Ÿ‘จโ€๐Ÿ’ป Author

Developed by Eric Santos.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

turing_py-0.1.1.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

turing_py-0.1.1-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file turing_py-0.1.1.tar.gz.

File metadata

  • Download URL: turing_py-0.1.1.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for turing_py-0.1.1.tar.gz
Algorithm Hash digest
SHA256 1a295b4de5f0a50e9e31172d5e64ccae66f02672d0acf5a954616a3c86c32323
MD5 3095dfd6a04dc87a363c858411f42a60
BLAKE2b-256 ba64fb2f8179b7ae11300d30c9b6b632f7781275fa20333ea8766bda6979a7b1

See more details on using hashes here.

File details

Details for the file turing_py-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: turing_py-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for turing_py-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 81ba46dad3e4a9277e8e7f5cb2e2f9e1afc84410bb334331698349f9550fb718
MD5 e241de9230c4d6793546d849c491f703
BLAKE2b-256 a7c14b687ad3da44b51d2b0b598a42445627758de72d9f445e0fefa50c009065

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page