Система команд исполнителя РОБОТ, “живущего” в прямоугольном лабиринте на клетчатой плоскости:
вверх вниз влево вправо
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно (по отношению к наблюдателю): вверх ↑, вниз ↓, влево ←, вправо →.
Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ (также по отношению к наблюдателю):
сверху
свободноснизу
свободнослева
свободносправа
свободно
Цикл
ПОКА <условие>команда
Выполняется, пока условие истинно, иначе происходит переход на следующую строку.
Сколько клеток приведенного лабиринта соответствует требованию, что, выполнив предложенную ниже программу, РОБОТ уцелеет и остановится в той же клетке, с которой он начал движение?
НАЧАЛО
ПОКА < сверху свободно > вправо
ПОКА <справа свободно> вниз
ПОКА < снизу свободно > влево
ПОКА <слева свободно> вверх
Выясним, что необходимо, чтобы РОБОТ остановился в той же клетке, с которой он начал движение. Так как программа заканчивается командой "ПОКА <слева свободно> вверх", следовательно, для того, чтобы робот остановился в той же клетке, с которой он начал движение, необходимо, чтобы у этой клетки была стенка слева. Этому условию удовлетворяют все клетки левой стенки лабиринта и еще восемь клеток кроме нее.
Все клетки стенки не подходят, так как там происходит зацикливание либо на первой команде. либо на второй, либо на третьей(А4, если нумеровать цифрами сверху вниз, а буквами слева направо). Проверим каждую оставшуюся клетку. Ответ: три клетки Б3, Г1, Д5.
Ответ: 3.

