Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка.doc
Скачиваний:
275
Добавлен:
13.02.2015
Размер:
6.31 Mб
Скачать

Тема 17.2. Применимость программ. Определение результата выполнения программ

В задачах под массивом понимается последовательность подряд идущих меток, ограниченная пустыми ячейками. Если в задаче говорится, что на ленте задано число в унарной системе, то имеется в виду, что натуральное число закодировано с помощью массива длины. В задачах при описании начального состояния ленты указывается то, что записано начиная с самой левой непустой ячейки и заканчивая самой правой непустой ячейкой. При этом будем использовать следующие обозначения:подряд идущих меток будем обозначать, апустых ячеек –. Если не сказано ничего о местонахождении каретки в начальный момент времени, то считается, что каретка установлена на ячейку с самой левой меткой.

Пример: определить состояние ленты после работы приведённой машины Поста

1. 4.7.

2. 5.8.

3. 6.9.

Начальные состояния:

а). (1110011000) б).(зацикливание) в).(1001011000)

Пример: определить состояние ленты после работы приведённой машины Поста

1. 5.9.

2. 6.10.

3. 7.11.

4. 8.

Начальные состояния:

а). (зацикливание) б).(010011) в).(01010110)

Пример: определить состояние ленты после работы приведённой машины Поста

1. 5.9.

2. 6.10.

3. 7.11.

4. 8.

Начальные состояния:

а). (зацикливание…111)

б). (зацикливание…1111001)

в). (зацикливание 1010111…)

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

1. 5.

2. 6.

3. 7.

4. 8.

Начальные состояния:

а). ()

б). ()

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

1. 6.11.

2. 7.12.

3. 8.13.

4. 9.

5. 10.

Начальные состояния:

а). ()

б). ()

в). ()

Пример:На ленте задан массив меток. Увеличить длину массива на 2 метки. Каретка находится либо слева от массива, либо над одной из ячеек самого массива.

1. 5.

2. 6.

3. 7.

4. 8.

Пример:Даны два массива меток, которые находятся на некотором расстоянии друг от друга. Требуется соединить их в один массив. Каретка находится над крайней левой меткой первого массива.

1. 6.

2. 7.

3. 8.

4. 9.

5. 10.

Пример:На ленте задана последовательность массивов, включающая в себя один и более массивов. При этом два соседних массива отделены друг от друга одной пустой ячейкой. Необходимо на ленте оставить один массив длиной равной сумме длин массивов, присутствовавших изначально. Каретка находится над крайней левой меткой первого (левого) массива.

1. 6.

2. 7.

3. 8.

4. 9.

5. 10.

Пример:На ленте заданы два массива —и,. Вычислить разность этих массивов. Каретка располагается над левой ячейкой правого массива.

Запишем решение алгоритма в словесной форме:

1. ищем правый край массива , двигаясь слева направо;

2. стираем правую метку массива ;

3. ищем правый край массива , двигаясь слева направо;

4. стираем левую метку массива ;

5. проверяем, мы стёрли последнюю метку в массиве (в этом случае следующая справа ячейка должна быть пустой);

6. если стерли последнюю метку, то конец алгоритма;

7. иначе ищем правый конец массива , двигаясь справа налево;

8. переход на шаг 2.

1. 7.

2. 8.

3. 9.

4. 10.

5. 11.

6. 12.

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

1. 7.13.

2. 8.14.

3. 9.15.

4. 10.16.

5. 11.17.

6. 12.

Пример:На ленте задан массив. Удвоить массив в два раза. Каретка располагается над первой ячейкой массива.

В результате работы программы справа от исходного массива будет сформирован новый массив удвоенной длины, исходный массив будет стёрт.

1. 7.13.

2. 8.14.

3. 9.15.

4. 10.16.

5. 11.

6. 12.

Пример:На ленте задан массив. Вычислить остаток от деления длины заданного массива на 3. Каретка располагается над первой ячейкой массива.

1. 8.

2. 9.

3. 10.

4. 11.

5. 12.

6. 13.

7.

Пример:На ленте машины Поста расположен массив изметок. Составить программу, действуя по которой машина выяснит, делится ли числона 3. Если да, то после массива через одну пустую ячейку поставить метку.

Нужно проверить, что массив состоит не менее чем из трёх меток, сместиться правее них и снова решать ту же задачу. Если правее очередных трёх меток окажется пробел, то за ним поставить ещё одну метку.

1. 6.

2. 7.

3. 8.

4. 9.

5.

Пример:На ленте имеется некоторое множество меток (общее количество меток не менее 1). Между метками множества могут быть пропуски, длина которых составляет одну ячейку. Заполнить все пропуски метками.

1. 5.

2. 6.

3. 7.

4.

Пример:На ленте имеется массив изотмеченных ячеек. Каретка обозревает крайнюю левую метку. Справа от данного массива на расстоянии вячеек находится ещё одна метка. Составьте для машины Поста программу, придвигающую данный массив к данной ячейке.

1. 6.

2. 7.

3. 8.

4. 9.

5. 10.