Решение: Закрашивание клеток под стеной
На бесконечном поле имеется длинная горизонтальная стена неизвестной длины. Робот находится в одной из клеток непосредственно сверху от стены. Напишите алгоритм для Робота, закрашивающий все клетки, расположенные ниже стены и прилегающие к ней. Робот должен закрасить только клетки, удовлетворяющие условию. Конечное расположение Робота может быть произвольным. Алгоритм должен работать для стены любого размера и любого допустимого начального положения Робота, не разрушаться и завершаться.
Робот умеет выполнять команды «вверх», «вниз», «влево», «вправо», «закрасить», а также проверять условия «сверху свободно», «снизу свободно», «слева свободно», «справа свободно». Доступны условный оператор «если условие то ... все» и цикл «нц пока условие ... кц».


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