- •Находим первую пустую ячейку справа от числа.
- •Переходим к первой слева метке.
- •Известно, что вначале каретка обозревает первую слева метку.
- •Конец работы.
- •Конец работы.
- •Известно, что вначале каретка обозревает первую слева метку.
- •Конец работы.
- •Известно, что вначале каретка обозревает первую слева метку.
Передвигаем каретку на первую пустую ячейку справа от левого массива(каретка находится между массивами).
Удаляем крайнюю справа метку левого массива.
Передвигаем каретку к первой слева метке второго массива.
Удаляем крайнюю слева метку второго массива.
Передвигаем каретку на одну ячейку вправо.
Проверяем наличие метки в ячейке. Если метки нет, то переходим к пункту 12. Если метка есть, то переходим к следующему пункту.
Передвигаем каретку к первой справа метке левого массива.
Проверяем ячейку слева. Если метки нет, то переходим на следующий пункт. Если метка есть, то переходим на пункт 1.
Делаем шаг вправо. Удаляем метку.
Передвигаем каретку к первой слева метке правого массива.
Удаляем метку.
Конец работы.
Задача 1. На информационной ленте машины Поста находится массив меток. Каретка находится где-то над массивом (но не над крайней меткой). Сотрите все метки, кроме крайних.
Алгоритм. Сначала удаляем все метки справа от каретки, за исключением крайней. Потом также слева. Положение каретки может измениться.
Удаляем метку.
Делаем шаг вправо.
Проверяем наличие метки. Если метка есть, возвращаемся на пункт 1. Если метки нет, значит была удалена крайняя. Переходим на шаг 4.
Возращаемся на одну ячейку влево и ставим метку.
Идем влево пока не найдем метку.
Удаляем метку.
Делаем шаг влево.
Проверяем наличие метки. Если метка есть, возвращаемся на пункт 6. Елси метки нет, значит была удалена крайняя. Переходим на шаг 9.
Возвращаемся на одну ячейку вправо и ставим метку.
Конец рабоы.
Задача 2. На ленте машины Поста расположен массив из 2* N отмеченных секций. Составить программу, по которой машина Поста раздвинет на расстояние в 1 секцию две половины данного массива.
Алгоритм основан на идее поочередного отодвигания крайних меток. Пока посередине не останется одна метка - середина массива.
Удаляем метку в ячейке. Ставим метку слева от этой ячейки.
Передвигаем каетку к первой пустой ячейке справа от массива.
Ставим метку в ячейке. Удаляем метку слева от этой ячейки.
Делаем один шаг влево. Проверяем ячейку. Если метки нет, то переходим к пунту 6. Если метка есть, то переходим к следующему пункту.
Находим первую пустую ячейку слева. Делаем одни шаг вправо. Переходим к пункту 1.
Делаем один шага вправо. Ставим метку.
Удаляем крайнюю ячейку справа.
Конец работы.
Задача 1. На ленте машины Поста расположен массив из N меток. Составить программу, действуя по которой машина выяснит, является ли число N четным. Если да, то после массива через одну пустую секцию поставить метку V. В начальном состоянии каретка обозревает крайнюю слева метку.
Алгоритм
Известно, что вначале каретка обозревает первую слева метку.
Проверяем вторую справа ячейку, если она пустая, то число N нечетное. Переходим на пункт 6.
Проверяем третью срава ячейку. Если ячейка пустая, значит на ленте расположены подряд две метки. Следовательно, число N на 2 делится. Переходим на пункт 4. Если ячейка с меткой, значит на ленте расположено более двух меток, возвращаемся на пункт 2, считая текущую ячейку первой.
Делаем шаг вправо, пропуская одну ячейку.
Ставим метку.
Конец работы.
Задача 2. На ленте машины Поста расположен массив из 2* N –1 меток. Составить программу отыскания средней метки массива и стирания ее.
Алгоритм основан на идее поочередного отодвигания крайних меток. Пока посередине не останется одна метка - середина массива.
Удаляем метку в ячейке. Ставим метку слева от этой ячейки.
Передвигаем каетку к первой пустой ячейке справа от массива.
Ставим метку в ячейке. Удаляем метку слева от этой ячейки.
Делаем два шага влево. Проверяем ячейку. Если метки нет, то переходим к пунту 6. Если метка есть, то переходим к следующему пункту.
Находим первую пустую ячейку слева. Делаем одни шаг вправо. Переходим к пункту 1.
Делаем два шага вправо. Ставим метку.
Удаляем две крайние ячейки справа.
Конец работы.
Задача 1. На ленте машины Поста расположен массив из N меток. Составить программу, действуя по которой машина выяснит, является ли число N нечетным. Если да, то после массива через одну пустую секцию поставить метку V . Будем считать, что в начальном состоянии каретка обозревает крайнюю слева метку. Алгоритм
Известно, что вначале каретка обозревает первую слева метку.
Проверяем вторую справа ячейку, если она пустая, то число N нечетное. Переходим на пункт 4.
Проверяем третью срава ячейку. Если ячейка пустая, значит на ленте расположены подряд две метки. Следовательно, число N на 2 делится. Переходим на пункт 6. Если ячейка с меткой, значит на ленте расположено более двух меток, возвращаемся на пункт 2, считая текущую ячейку первой.
Делаем шаг вправо, пропуская одну ячейку.
Ставим метку.
Конец работы.
Задача 2. Задача В.А.Успенского. На информационной ленте либо вправо, либо влево от секции, над которой расположена каретка, находится массив меток. Расстояние до массива выражается конечным числом. Необходимо составить программу, работая по которой машина Поста найдет этот массив и установит каретку на начало этого массива.
Алгоритм
Проверяет текущую ячейку. Если метки нет, переходим к следующему пункту. Если метка есть, то переходим к пункту 14. Каретка в начале работы сразу обозревает массив, конец работы.
Двигаемся на одну ячейку вправо.
Проверяем ячейку. Если метки нет, то переходим к следующему пункту. Если метка есть, то переходим к пункту 14. Массив найден. Конец работы.
Ставим метку. Эта метка будет правым маяком.
Передвигаем каретку на две ячейки влево.
Проверяем ячейку. Если метки нет, то переходим к следующему пунту. Если метка есть, то переходим к пункту 12. Массив найден. Осталось удалить правый маяк.
Ставим метку. Эта метка будет левым маяком.
Передвигаем каретку к правому маяку. Удаляем метку. Делаем шаг вправо.
Проверяем ячейку. Если метки нет, то переходим к следующему пунту. Если метка есть, то переходим к пункту 13. Массив найден. Осталось удалить левый маяк.
Ставим метку.
Передвигаем каретку к левому маяку. Удаляем метку. Делаем шаг влево. Переходим к пункту 6.
Удаляем правый маяк и возвращаемся влево до первой метки. Массив найден. Переходим к пунту 14. Конец работы.
Удаляем левый маяк м возвращаемся вправо до первой метки. Массив найден. Переходим к следующему пунтку.
Конец работы.
Задача 1. На ленте машины Поста расположен массив из N меток. Составить программу, действуя по которой машина выяснит, делится ли число на 3. Если да, то в исходном массиве удаляются метки через две клетки.
Алгоритм
Известно, что вначале каретка обозревает первую слева метку.
Проверяем вторую справа ячейку, если она пустая, то число N на 3 не делится. Переходим на пункт 7.
Проверяем третью справа ячейку, если она пустая, то число N на 3 не делится. Переходим на пункт 7.
Проверяем четвертую срава ячейку. Если ячейка пустая, значит на ленте расположены подряд три метки. Следовательно, число N на 3 делится. Переходим на пункт 5. Если ячейка с меткой, значит на ленте расположено более трех меток, возвращаемся на пункт 2, считая текущую ячейку первой.
Находим первую пустую ячейку с краю (с лева или с права).
В цикле удаляем каждую третью метку: делаем три шага, удаляем метку, делаем три шага, если метка есть снова удаляем, опять делаем три шага и так далее, пока удалять станет нечего.
Конец работы.
Задача 2 . На ленте машины Поста находится n массивов меток, после последнего массива на расстоянии более 3-х пустых секций находится 1 метка. Массивы разделены 3-я пустыми ячейками. Количество меток в массивах не может быть меньше 2-х. Произвести обработку массивов следующим образом: если количество меток в массиве кратно 3, то стереть метки в данном массиве через одну, иначе массив стереть полностью. Каретка находится над крайней левой меткой первого массива.
Пример
Начальное состояние. На ленте расположено 4 массива длиной в 3 метки, 4 метки, 6 меток и 1 метку. Длина первого и третьего массива кратны трем, поэтому у этих массивов удаляются метки через одну (каждая вторая). Длина второго массива не кратна трем, поэтому этот массив удаляется полностью. Последний массив в одну метку слудит сигналом конца массивов на ленте.
V |
V |
V |
|
|
|
V |
V |
V |
V |
|
|
|
V |
V |
V |
V |
V |
V |
|
|
|
V |
Конечное состояние
V |
|
V |
|
|
|
|
|
|
|
|
|
|
V |
|
V |
|
V |
|
|
|
|
V |
Алгоритм
