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


Шешім по шагам
5 қадамСначала закрашиваем начальную клетку лестницы.
Пока справа свободно, Робот переходит на следующую клетку ступени и закрашивает её.
После движения вправо проверяем вертикальное направление. Если сверху свободно, Робот поднимается на следующую ступень. Если сверху пройти нельзя, но снизу свободно, Робот спускается на следующую ступень.
После каждого вертикального перехода клетка также закрашивается. Когда справа появляется стена, все клетки лестницы закрашены, и выполнение завершается.
Один из нұсқа алгоритма на тілінде Кумир:
$$закрасить нц пока справа свободно вправо закрасить если сверху свободно то вверх закрасить иначе если снизу свободно то вниз закрасить все все кц$$закрасить; пока справа свободно: вправо, закрасить; если сверху свободно — вверх и закрасить, иначе если снизу свободно — вниз и закрасить; конец цикла.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Не закрашивают начальную клетку.
Забывают закрасить клетку после вертикального перехода.
Используют команду движения без предварительной проверки, что направление свободно.
Останавливают алгоритм после подъёма и не проходят нисходящую часть лестницы.
Пытаются заранее указать число ступеней, хотя оно неизвестно.