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


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