You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Micke Nordin b9454659a3
Add compiler and decompiler for .tm files
6 years ago
cards Add compiler and decompiler for .tm files 6 years ago
README.md Update README.md 6 years ago
adder.tm Add compiler and decompiler for .tm files 6 years ago
compiler.py Add compiler and decompiler for .tm files 6 years ago
decompiler.py Add compiler and decompiler for .tm files 6 years ago
machine.py remove commented out print 6 years ago

README.md

turing_machine

A simulation of a Turing machine with a two-way register and a card reader

Operation of the turing machine

First the machine will read card one for instructions. The machine will start at registry position zero, it will read the value there (which will be zero) and write the value from the card to that registry entry, then it will move the write head in the indicated direction. After the instruction on the card has been executed it will move to the indicated next card. If that card is the zeroeth card, the machine will halt.

The anatomy of a Card

This is an example of a one card busy beaver:

1
1
0 
1
0
0

that means

# If registry is zero
1 # What to write one or zero
1 # Move left for 1 move right for 0
0 # Number of next card, an int 
# If registry is one
1 # What to write one or zero
0 # Move right for 1 move left for 0
0 # Number of next card, an int

This means that if the registry value is 0 write a 1 to the left and then move to card zero (halt). If the registry value is 0 write a 1 to the right and then move to card zero.

That is to say that the first three rows correspond to a registry of zero and the last three rows correspond to a registry of one.

A card that will move to the left if it is zero and the right if it is one and then exit, but leave everything else in place looks like this:

0
1
0
1
0
0