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