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


Шешім по шагам
6 қадамРобот находится под нижней стеной. Двигаемся влево, пока сверху находится стена. Так Робот окажется в клетке непосредственно слева от нижней стены.
Переходим вправо в первую клетку под нижней стеной и движемся вправо, закрашивая все клетки до её правого края.
Оказавшись справа от нижней стены, поднимаемся вверх, пока сверху не появится стена. Это нижняя граница верхней стены.
Двигаемся влево под верхней стеной и закрашиваем все клетки до её левого края. Благодаря одинаковой длине и совпадению левых краёв стен этот проход завершается корректно.
Один из подходящих алгоритмов на тілінде Кумир:
нц пока не сверху свободно
влево
кц
вправо
нц пока не сверху свободно
закрасить
вправо
кц
нц пока сверху свободно
вверх
кц
нц пока не сверху свободно
закрасить
влево
кц
нц пока не сверху свободно
влево
кц
вправо
нц пока не сверху свободно
закрасить
вправо
кц
нц пока сверху свободно
вверх
кц
нц пока не сверху свободно
закрасить
влево
кц
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Закрашивание клетки справа или слева от стены.
Попытка пройти сквозь стену вместо обхода её края.
Подъём вверх до верхней стены без проверки условия «сверху свободно».
Использование фиксированного числа қадам, хотя длины стен неизвестны.