среда, 14 октября 2009 г.

Порядок работы машины Поста
Работа машины Поста состоит в том, что каретка передвигается вдоль ленты и печатает или стирает метки. Чтобы машина Поста работала, надо задать некоторую программу и некоторое состояние машины (т. е. нужно как-то расставить метки по ячейкам ленты, в частности, можно все ячейки оставить пустыми и поставить каретку против одной из ячейки).
Работа машины на основании заданной программы происходит следующим образом. Машина приводится в начальное состояние и приступает к выполнению первой команды программы. Эта команда выполняется за один такт, после чего машина приступает к выполнению той команды, номер которой равен отсылке первой команды. Эта команда также выполняется за один такт, после чего начинается выполнение той команды, номер команды которой равен отсылке выполненной команды и так далее, до тех пор, пока не будет выполнена команда останова машины.
Будем считать, что в начальном и в конечном состояниях каретка находится над крайней левой меткой.
Если в ходе выполнения программы машина дойдет до выполнения команды остановки, то программа в этом случае считается выполненной, и машина является применимой к входному слову.
Если в ходе выполнения программы машина не дойдет до выполнения ни одной из команд останова, то выполнение программы при этом никогда не прекращается, машина никогда не останавливается – процесс работы машины происходит бесконечно. В этом случае говорят, что машина не применима к входному слову.

Для решения задачи необходимо «сдвинуть» числа так, чтобы между ними не было пустых ячеек. Для этого можно сделать следующее. Удалить первую метку, переместиться вправо и поставить метку в первую справа ячейку без метки. Если справа ячейка пустая, то разрыв не ликвидирован, поэтому каретка возвращается в начало первого числа и действия повторяются. Если справа от поставленной метки ячейка с меткой, то разрыв ликвидирован, каретка возвращается в начало числа, машина останавливается.
Программа Комментарии
1 ↕ 2 удалить первую метку
2 → 3 цикл сдвига вправо до первой ячейки без метки
3 ? 4, 2
4 V 5 постановка метки в свободную ячейку
5 → 6 если справа ячейка пуста, то переход к 7-ой команде, в противном случае к – 10-ой
6 ? 7, 10
7 ← 8 цикл сдвига влево до первой ячейки без метки
8 ? 9, 7
9 → 1 переход на крайнюю левую метку
10 ← 11 сумма найдена, перевод каретки в начало выходного слова
11 ? 12, 10
12 → 13
13 ! 13


Оказываются квалифицированные бухгалтерские услуги екатеринбург в любых операциях купли-продажи, оформлении документов.


К вашим услугам оперативная полиграфия, осуществляющая все виды работ по печати, разработке, дизайну продукции.