You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
turingsim
a quick and dirty turing machine simulator, written in C89.
build and run
to build:
make build
or
cc -std=c89 -Wall turingsim.c -o turingsim
to run with an input file:
./turingsim machines/parentesis.txt | less
input file fields
the line-based fields are:
- initial state
- inital tape
- initial position of head on tape (starting at 0)
- number of rules
- list of rules, in the form: state, symbol, new state, new symbol, direction (even is right, odd is left)
- maximum number of simulation steps
example input file
this input file corresponds to the "comprobador de paréntesis" machine described in máquinas de turing
a
A(()())A
1
11
a)bX1
a(a(0
aAcA1
aXaX0
b)b)1
b(aX0
bAH00
bXbX1
c(H00
cAH10
cXcX1
80
example output
the output for this example file looks as follows:
parentesis.txt
initial state: a
initial tape: A(()())A
initial position of head: 1
number of rules: 11
rule number 0: a)bX1
rule number 1: a(a(0
rule number 2: aAcA1
rule number 3: aXaX0
rule number 4: b)b)1
rule number 5: b(aX0
rule number 6: bAH00
rule number 7: bXbX1
rule number 8: c(H00
rule number 9: cAH10
rule number 10: cXcX1
max number of simulation steps: 80
step 0
a
A(()())A
step 1
a
A(()())A
step 2
a
A(()())A
step 3
b
A((X())A
step 4
a
A(XX())A
step 5
a
A(XX())A
step 6
a
A(XX())A
step 7
b
A(XX(X)A
step 8
a
A(XXXX)A
step 9
a
A(XXXX)A
step 10
b
A(XXXXXA
step 11
b
A(XXXXXA
step 12
b
A(XXXXXA
step 13
b
A(XXXXXA
step 14
b
A(XXXXXA
step 15
a
AXXXXXXA
step 16
a
AXXXXXXA
step 17
a
AXXXXXXA
step 18
a
AXXXXXXA
step 19
a
AXXXXXXA
step 20
a
AXXXXXXA
step 21
c
AXXXXXXA
step 22
c
AXXXXXXA
step 23
c
AXXXXXXA
step 24
c
AXXXXXXA
step 25
c
AXXXXXXA
step 26
c
AXXXXXXA
step 27
c
AXXXXXXA
step 28
H
1XXXXXXA
halted
the 1 written at the end indicates that the parenthesis sequence was well-formed. if there was a parenthesis without its pair, the machine would have written 0 instead.