Шешімі: Траектория робота в лабиринте
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, включает команды перемещения вверх, вниз, влево и вправо, а также проверки условий «сверху свободно», «снизу свободно», «слева свободно», «справа свободно». Если РОБОТ начинает движение в сторону стены, он разрушается, и выполнение программы прекращается. Цикл выполняется, пока условие истинно.
Сколько клеток лабиринта соответствуют требованию, что, начав в ней выполнение программы, РОБОТ уцелеет и остановится в закрашенной клетке (клетка А1)?
НАЧАЛО
ПОКА слева свободно ИЛИ сверху свободно
ЕСЛИ сверху свободно
ТО вверх
ИНАЧЕ влево
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Шешім по шагам
3 қадамЦикл продолжается, пока хотя бы одна из сторон — сверху или слева — свободна. Поэтому остановка происходит только в клетке, где сверху и слева находятся стены.
В каждой рабочей клетке робот выбирает единственное направление: вверх, если сверху свободно, и влево — иначе. Движение всегда направлено к верхней или левой границе, поэтому циклического движения нет.
Для решения задачи нужно проследить траекторию из каждой клетки лабиринта, проверяя, не попадает ли робот на стену и заканчивает ли он движение в клетке А1. При подсчёте подходящих начальных клеток получаем 25.
Где здесь ошибаются
Считать клетки, из которых робот может попасть в А1, не проверяя столкновения со стенами.
Забыть, что при свободном проходе сверху робот всегда выбирает движение вверх.
Считать клетку остановки только по одному условию, хотя цикл прекращается лишь при ложности всего условия «слева свободно ИЛИ сверху свободно».