Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Жизнь как алгоритм.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
401.41 Кб
Скачать

Задача 4

На бесконечном поле имеется лестница. Сначала лестница спускается вниз справа налево, затем спускается вниз слева направо. Высота каждой ступени– одна клетка, ширина– две клетки. Робот находится справа от верхней ступени лестницы. Количество ступенек, ведущих влево, и количество ступенек, ведущих вправо, неизвестно. На рисунке указан один из возможных способов расположения лестницы и Робота.

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно над ступенями лестницы, спускающейся слева направо. Требуется закрасить только клетки, удовлетворяющие данному условию. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться.

решение

Использовать Робот

0 – вверх, 1 – вправо, 2 – вниз, 3 – влево цел направленность = 0

алг

нач

нц пока не клетка закрашена

если держимся правой рукой

то

если впереди свободно

то вперед

иначе налево

все

иначе

направо

вперед

все

кц

кон

алг вперед

нач

выбор

при направленность = 0: вверх

при направленность = 1: вправо

при направленность = 2: вниз

при направленность = 3: влево

все

кон

алг лог впереди свободно

нач

выбор

при направленность = 0: знач := сверху свободно

при направленность = 1: знач := справа свободно

при направленность = 2: знач := снизу свободно

при направленность = 3: знач := слева свободно

все

кон

алг лог держимся правой рукой

нач

направо

знач := не впереди свободно

налево

кон

алг налево

нач

направленность := направленность - 1

если направленность = -1

то направленность := 3

все

кон

алг направо

нач

направленность := направленность + 1

если направленность = 4

то направленность := 0

все

кон

Задача 5

Робот находится в лабиринте, не имеющем циклов. Требуется найти закрашенную клетку и остановиться в ней. Известно, что закрашенная клетка находится около стены.

Пример лабиринта:

решение

Использовать Робот

0 – вверх, 1 – вправо, 2 – вниз, 3 – влево цел направленность = 0

алг

нач

нц пока не клетка закрашена

если по правую руку стена

то

если впереди стена

то поворот налево

иначе вперед

все

иначе

поворот направо

если не впереди стена

то вперед

все

все

кц

кон

алг поворот направо

нач

направленность := направленность + 1

если направленность = 4

то направленность := 0

все

кон

алг поворот налево

нач

направленность := направленность - 1

если направленность = -1

то направленность := 3

все

кон

алг вперед

нач

выбор

при направленность = 0: вверх

при направленность = 1: вправо

при направленность = 2: вниз

при направленность = 3: влево

все

кон

алг лог впереди стена

нач

выбор

при направленность = 0: знач := сверху стена

при направленность = 1: знач := справа стена

при направленность = 2: знач := снизу стена

при направленность = 3: знач := слева стена

все

кон

алг лог по правую руку стена

нач

поворот направо

знач := впереди стена

поворот налево

кон