среда, 13 ноября 2013 г.

Машина Поста (Д/з на 14.11.13)

1. Машина Поста (работа над ошибками)


Дано: каретка располагается в пустой клетке, слева от неё имеется некоторое количество меток. Задача: составить алгоритм умножения целого числа на два для машины Поста.


Решение:

1. Шаг влево
2. Если пусто, то (? 17, 3)
3. Возвращаемся в исходное положение (команда №4)
4. Перемещаемся в конец второй группы меток ( команда №5 и №6)
5. Ставим две метки (команды №6, 7, 8)
6. Возвращаемся в исходное положение (команды №9, 10, 11) (там на изображении опечатка в комментарии к команде №10: если пусто выполняем команду 11) 
7. Перемещаемся в начало исходного числа и стираем одну метку (команды №12, 13, 14)
8. В исходное положение и переходим к первому пункту (команда №16)
Команда 17 для исхода "иначе", далее делаем шаг вправо
Конец алгоритма















Домашнее задание 

Дано: каретка располагается в пустой клетке. Слева от каретки располагается большее число меток, справа - меньшее (числа любые).
Задача: Составить для машины Поста алгоритм вычисления разности для данных чисел (из большего меньшее)
Решение: 
Каретка начинает своё перемещение вправо и зеркально удаляет метки в каждой из групп, начиная с вычитаемого, заканчивая уменьшаемым. Таким образом из уменьшаемого мы полностью удаляем количество меток вычитаемого (производим вычитание).


Зеленым цветом выделена та команда, на которой возникла проблема. После осуществления вычитания не получилось прекратить программу и каретка продолжала своё движение вправо. С 1 по 7 команды алгоритма работают для любых чисел.



Комментариев нет:

Отправить комментарий