Исполнитель РОБОТ умеет перемещаться по прямоугольному лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними по сторонам клетками может стоять стена. Клетка в лабиринте может быть чистая или закрашенная. Закрашенные клетки на рисунке выделены серым цветом.
Система команд исполнителя РОБОТ содержит восемь команд. Четыре команды – это команды перемещения:
вверх вниз влево вправо
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно (по отношению к наблюдателю): вверх ↑, вниз ↓, влево ←, вправо →.
Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ (также по отношению к наблюдателю):
сверху
свободноснизу
свободнослева
свободносправа
свободно
Цикл
ПОКА <условие>
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ <условие>
ТО команда
КОНЕЦ ЕСЛИ
выполняется команда только, если условие истинно. В противном случае ничего не происходит.
В конструкциях ПОКА и ЕСЛИ условие может содержать команды проверки, а также слова И, ИЛИ, НЕ.
Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?
НАЧАЛО
ПОКА<справа свободно ИЛИ снизу свободно>
ПОКА <справа свободно>
вправо
КОНЕЦ ПОКА
ПОКА <снизу свободно>
вниз
КОНЕЦ ПОКА
КОНЕЦ ПОКА
КОНЕЦ
Один из главных приёмов в решении этой задачи — проверять клетки группами а не по одной.
При данной программе РОБОТ поступает следующим образом: сперва РОБОТ проверяет свободна ли клетка справа или снизу от него, если это так, то РОБОТ переходит к первому действию внутри цикла. В этом цикле пока справа клетки в которой находится РОБОТ нет стены он продолжает двигаться вправо. Как только это условие перестанет выполняться он переходит ко второму циклу. Он, заключается в следующем: РОБОТ передвигается на одну клетку вниз, до тех пор, пока снизу свободно.
Проанализировав эту программы приходим к выводу, что РОБОТ будет двигаться вправо или вниз, пока у него есть такая возможность. РОБОТ при данной программе никогда не разобьётся.
Проверив все клетки по выведенному нами правилу движения РОБОТА выясняем, что число клеток, удовлетворяющих условию задачи, равно 21.

