Your assignment is to make a turing machine simulator. I expect you will work in Java, although most other languages are fine, just check with me.

Input a file of transitions one per line. The transition (q,c)->(r,d,t) is represented as q c r d t, where q and r are unsigned integer, c ad d are characters, and t is either L or R. The underscore represents the blank character. By convention, state 1 is the start state and state 2 is the (only) final state. The input state is a string from stdin. Multiple lines from stdin run the machine on each string. The output is selected to be normal, just the single letter A or R, followed by a colon, followed by the tape contents, or debugging output giving the tape at each step writen n:1010__123_21^123123, where the caret gives the head position, and n is the current state (an integer).

Write these programs for your turing machine: TBA.

  1. Recognition of the language ww, for w in {0,1}*.
  2. The integer addition problem as given in the second midterm.
  3. Your best Busy Beaver machine for 3 states on tape alphabet {0,1} and a separate blank symbol (3 tape symbols).