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


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