#!/usr/bin/env ruby

require 'TuringMachine'

#19 states, 0-18

INITIAL_STATE = '00'
FINAL_STATES = ['18']
TRANSITIONS = {
['00', 'a'] => ['01', '^', :L],
['00', 'b'] => ['02', '^', :L],
['01', '^'] => ['03', 'a', :R],
['02', '^'] => ['04', 'b', :R],
['03', '^'] => ['05', '^', :R],
['04', '^'] => ['06', '^', :R],
['05', 'a'] => ['05', 'a', :R],
['05', 'b'] => ['05', 'b', :R],
['06', 'a'] => ['06', 'a', :R],
['06', 'b'] => ['06', 'b', :R],
['05', '^'] => ['07', '^', :R],
['06', '^'] => ['08', '^', :R],
['07', 'a'] => ['07', 'a', :R],
['07', 'b'] => ['07', 'b', :R],
['08', 'a'] => ['08', 'a', :R],
['08', 'b'] => ['08', 'b', :R],
['07', '^'] => ['09', 'a', :L],
['09', 'a'] => ['09', 'a', :L],
['09', 'b'] => ['09', 'b', :L],
['09', '^'] => ['10', '^', :L],
['10', 'a'] => ['10', 'a', :L],
['10', 'b'] => ['10', 'b', :L],
['10', '^'] => ['00', '^', :R],
['00', '^'] => ['11', '^', :R],
['11', 'a'] => ['12', '^', :L],
['11', 'b'] => ['13', '^', :L],
['12', '^'] => ['14', '^', :L],
['13', '^'] => ['15', '^', :L],
['14', '^'] => ['16', 'a', :R],
['15', '^'] => ['16', 'b', :R],
['16', '^'] => ['17', '^', :R],
['17', '^'] => ['11', '^', :R],
['11', '^'] => ['18', '^', :L],
['08', '^'] => ['09', 'b', :L]
}

TM = TuringMachine.new(INITIAL_STATE, FINAL_STATES, TRANSITIONS)

TM.run('aabbab')
