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


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