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


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