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


Число клеток, не удовлетворяющих условию задачи равно 8: A5, A6, B6, C6, D1, D2, F1, F2. Поэтому, число клеток, удовлетворяющих условию задачи равно 36 - 8 = 28.
Условию задачи также не удовлетворяют клетки В1 и В2.
клетки B1 и B2 будут удовлетворять условию, они спускается вниз до препятствия под b2, затем идет вправо в C2, а затем цикл повторяется заново и он пойдет в приоритете вниз к c5 и в итоге сможет прийти в F6.
b1 и b2 были бы нам непригодны, только если бы в клетке b2 справа было бы препятствие, его же там нет.
поэтому ответ 28
Начав движение из клетки В1, робот переместится в клетку В2, после чего начнет выполнять цикл движения вправо до клетки D2, где и остановится, поскольку в этой клетке имеются препятствия снизу и справа. Таким образом, робот не достигнет клетки F6.