Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Машина Тьюринга помогите пожалуйста

Азс Вариартт Ученик (97), закрыт 1 неделю назад
Продублировать слово для алфавита [a, b, c, d, e], слово:abcdee -> abcdeeabcdee
Лучший ответ
Андрей Высший разум (472549) 1 месяц назад
Стоим над самым левым символом слова, _ - пустая ячейка. Блоки однотипных команд (двигаем каретку, ничего не делая) заменил многоточием. Слева от двоеточия координаты команды в таблице, справа сама команда.
 Ищем первый слева символ в нижнем регистре,
меняем его на символ в верхнем регистре,
переключаемся на состояние, соответствующее изменённому символу: q4-q8
если символов в нижнем регистре не найдено, переключаемся в q2

q1,a: q4,R,A
q1,b: q5,R,B
q1,c: q6,R,C
q1,d: q7,R,D
q1,e: q8,R,E
q1,A: q1,R,A
...
q1,E: q1,R,E
q1,_: q2,L,_

Переводим все символы в нижний регистр
Как только достигли пустой ячейки - стоп.

q2,A: q2,a,L
q2,B: q2,b,L
q2,C: q2,c,L
q2,D: q2,d,L
q2,E: q2,e,L
q2,_: стоп

Устанавливаем каретку на левый символ слова и переходим в q1

q3,a: q3,a,L
...
q3,E: q3,E,L
q3,_: q1,_,R

Ищем первую справа пустую ячейку, записываем в неё A, переходим в q3

q4,a: q4,R,a
...
q4,E: q4,R,E
q4,_: q3,L,A

Ищем первую справа пустую ячейку, записываем в неё B, переходим в q3

q5,a: q5,R,a
...
q5,E: q5,R,E
q5,_: q3,L,B

Ищем первую справа пустую ячейку, записываем в неё C, переходим в q3

q6,a: q6,R,a
...
q6,E: q6,R,E
q6,_: q3,L,C

Ищем первую справа пустую ячейку, записываем в неё D, переходим в q3

q7,a: q7,R,a
...
q7,E: q7,R,E
q7,_: q3,L,D

Ищем первую справа пустую ячейку, записываем в неё E, переходим в q3

q8,a: q8,R,a
...
q8,E: q8,R,E
q8,_: q3,L,E
Азс ВариарттУченик (97) 1 месяц назад
А можете скинуть файлом?
Остальные ответы
Похожие вопросы