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.
a quick and dirty turing machine simulator, written in C89.
build and run
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
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.