Slide 18
Slide 18 text
while (!in_array($state, $accept_states)) {
$read_val = isset($tape[$position]) ? $tape[$position] : '_';
!
if (!isset($rules[$state][$read_val])) {
throw new NoTransitionException();
}
!
list($write_val, $move_dir, $new_state) = $rules[$state][$read_val];
!
$tape[$position] = $write_val;
!
if ('l' === $move_dir) {
$position--;
if ($position < 0) {
$position++;
array_unshift($tape, '_');
}
} else if ('r' === $move_dir) {
$position++;
if ($position >= count($tape)) {
array_push($tape, '_');
}
}
!
$state = $new_state;
}