Решение: Алгоритм для Робота в лабиринте
На бесконечном поле имеются две вертикальные стены одинаковой длины, расположенные точно одна напротив другой. Расстояние между стенами и их длина неизвестны. Робот находится справа от первой стены в клетке, расположенной у её нижнего края. Напишите алгоритм, который закрашивает клетки справа от первой стены у её нижнего и верхнего края, а также клетку слева от второй стены у её верхнего края. Робот должен закрасить только эти клетки, не разрушиться, а выполнение алгоритма должно завершиться для любого допустимого расположения стен.


Решение по шагам
6 шаговНачальная клетка находится справа от первой стены у её нижнего края, поэтому её нужно закрасить сразу.
Пока слева находится стена, Робот движется вверх. У верхнего края первой стены слева становится свободно, поэтому цикл завершается.
Верхнюю клетку справа от первой стены закрашиваем.
По верхнему ряду Робот движется вправо, пока справа свободно. После остановки он находится в клетке слева от второй стены, которую также закрашиваем.
Один из подходящих алгоритмов на языке исполнителя Робот:
закрасить
нц пока не слева свободно
вверх
кц
закрасить
нц пока справа свободно
вправо
кц
закрасить
закрасить; нц пока не слева свободно — вверх — кц; закрасить; нц пока справа свободно — вправо — кц; закрасить
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Не закрашивают начальную клетку у нижнего края первой стены.
Продолжают движение вверх после того, как слева становится свободно.
Двигаются вправо без проверки условия «справа свободно».
Закрашивают клетку справа от второй стены вместо клетки слева от неё.