This is a simple turing machine I created for an article I’ve been writing titled, “Neurons, turing machines, & lambda abstractions: an interesting combo?”
There are 3 ways you can install this on your system in order to play with it.
(1) Download a pre-built binary.
You should be able to grab a pre-built binary on the Releases page (oh, the power of Go cross-compiling :) … I’m looking at you, GCC).
Assuming you have your Go workspace all set up, the following are your two other options.
(2) Using go get
.
go get -t -u github.com/jonathanmarvens/turing-machine
(3) Building from source.
go get -t -u github.com/kisielk/errcheck github.com/mitchellh/gox github.com/tools/godep
git clone https://github.com/jonathanmarvens/turing-machine.git $GOPATH/src/github.com/jonathanmarvens/turing-machine
cd $GOPATH/src/github.com/jonathanmarvens/turing-machine
make
Now look in the .bin/ directory.
Running turing-machine help
should be helpful enough about the usage.
Feel free to use the example programs in examples/.
# ./.bin/{OS}-{ARCH}/turing-machine --prog="./examples/n-plus-1.btm.json"
Jonathan Barronville < http://乔纳森.com > ( [email protected] )
Here’s a great document that includes a formal (mathematical) definition of a turing machine (from Cornell University’s CS department): http://www.cs.cornell.edu/courses/cs4820/2012su/handouts/turingm.pdf … I liked this document more compared to like 6 others I read (the math is clearer and pretty straightforward to follow, there are real examples, the author doesn’t make stupid assumptions about things -.-, et cetera), so I (loosely) modeled the turing machine around it. You should read it if you want a better mathematical understanding of turing machines! Please don’t rely on Wikipedia for a good understanding of turing machines.
Here’s a good document, which also includes a formal definition of a turing machine: http://plato.stanford.edu/entries/turing-machine … although I didn’t particularly love this document, it’s pretty informative (you probably wanna read it first if you’re new to turing machines).
See LICENSE.