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


почему диапазон F3:F5 не подходит???
Заметьте, что начав движение из клеток F3, F4, F5, робот дойдет вниз до клетки F6, после чего попытается выполнить команду "вправо", и разобьётся.