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


Здесь А4 и В4 не войдут, ответ должен быть 9, так как, если из них будет двигаться робот, то он пойдёт до упора, до клетки F4. Если я ошибаюсь, объясните пожалуйста:)
Ошибаетесь: вы путаете условие «ЕСЛИ» и цикл «ПОКА». Ваше рассуждение было бы верно, если бы в условии было записано:
ПОКА снизу свободно ИЛИ справа свободно
ПОКА справа свободно
вправо
КОНЕЦ ПОКА
ПОКА снизу свободно
вниз
КОНЕЦ ПОКА
КОНЕЦ ПОКА