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

