https://github.com/infernio/bainwiz-turing
A Turing machine emulator written as a BAIN wizard, doubling as a proof that the BAIN wizard minilang is Turing-complete
https://github.com/infernio/bainwiz-turing
bain mod-manager modding turing-completeness turing-machine
Last synced: 4 months ago
JSON representation
A Turing machine emulator written as a BAIN wizard, doubling as a proof that the BAIN wizard minilang is Turing-complete
- Host: GitHub
- URL: https://github.com/infernio/bainwiz-turing
- Owner: Infernio
- License: mit
- Created: 2019-07-24T00:11:26.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-09-06T14:10:11.000Z (almost 7 years ago)
- Last Synced: 2025-03-06T19:19:54.621Z (over 1 year ago)
- Topics: bain, mod-manager, modding, turing-completeness, turing-machine
- Homepage:
- Size: 9.77 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Turing Machine Emulator as a BAIN Wizard
## 1. What?
This is a BAIN wizard for [Wrye Bash](https://github.com/wrye-bash/wrye-bash/) that emulates a Turing machine, thereby
proving my conjecture that the BAIN wizard minilang is Turing-complete.
## 2. Why?
Three reasons:
- An exercise for me to become more familiar with the BAIN wizard minilang, since I'm working on its interpreter.
- Curiosity - after looking through the implementation of its interpreter, I was fairly sure the language was Turing-complete.
But I obviously can't know without building a Turing machine emulator (or formally proving it).
- To stress test the parser and interpreter. This wizard uses almost every feature of BAIN wizards *except* the ones that
are commonly used. Really, the only uncommon feature that is unused here is `Exec` - and I did try to find a way to
squeeze it in.
## 3. Usage
Have a look at the `examples` folder and its README. The basic gist is:
- Create a Wrye Bash package.
- Drop the `wizard.txt` file in.
- Follow the instructions in the `wizard.txt` file, creating some subpackages with peculiar names.
- These names encode the state configurations for the Turing machine.
- One special subpackages begins with `I`, this subpackage describes the initial tape.
- In Wrye Bash, right click on the package and click `Wizard Installer... > Manual Wizard` or
`Wizard Installer... > Auto Wizard` if the startup message annoys you.
## 4. License
Licensed under MIT, see [LICENSE](LICENSE). No idea why you would want to use this, but feel free.