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


А клетка E6 разве не удовлетворяет условиям задачи?
"РОБОТ уцелеет и остановится в той же клетке, с которой он начал движение"
В клетке Е6 сверху свободно, поэтому РОБОТ сделает шаг влево и разобьется.