cool.phenon, можно я свой вариант частично напишу (для определения четности)?
Проще сделать так:
Стирая 2 единички идем вправо, причем у МТ всего 2 состояния, одно соответствует четным числам, 2-е - нечетным. Теперь надо закончить обработку - написать что делать, когда встретиться нолик: в этом случае мы возвращаемся назад и пишем ответ. Так мы возвращаемся назад:
Остается обработать установку головки в нужное состояние + написание ответа, исходя из состояния.
Вначале стрелка стоит в начале строки единиц, поэтому начинаем и двигаем вправо.
.
Далее проверяем следующую единицу. Если там её нет, можно оставаться на месте, можно идти вправо - без разницы. То есть, число нечётное. Если единица - идём вправо.
.
Теперь вытираем 2 нуля.
.
.
.
В состоянии X_{6} двигаемся вправо до первой единицы.
Если единица встретилась, начинаем всё по новой, переходим в состояние 1.
Уже больше похоже на работающий вариант. Только у Вас по-прежнему не использовано заключительное состояние и тогда МТ не остановится (или нужно переинтерпетировать работу по инструкциям так: если соответствующей инструкции не найдено (конкретно нет инструкции для
, эта комбинация встречается после исполнения команды
), то это равносильно инструкции
. И тогда все хорошо).
И еще технический, но нужный момент: у Вас головка ползет вправо, а когда стирание числа завершается, она встает практически там где была, а ее, по идее, надо передвинуть в начало. А хотя у Вас начала же нет, тогда, наверное, можно не передвигать даже.