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


Шешімін қадамдап көрсету
4 қадамАлгоритм должен обходить правую сторону вертикальной стены. При движении вниз клетка закрашивается только тогда, когда слева свободного прохода нет.
Проход в вертикальной стене не закрашивается: если слева свободно, Робот продолжает движение вниз.
Достигнув клетки непосредственно выше горизонтальной стены, Робот движется вправо. Клетки закрашиваются только при наличии стены снизу; проход в горизонтальной стене пропускается.
После прохождения горизонтальной стены Робот покидает область её верхней стороны, поэтому конечное положение Робота может быть любым.
Один из допустимых алгоритмов: обходить вертикальную стену сверху вниз, закрашивая клетки только при наличии стены слева, затем обходить горизонтальную стену слева направо, закрашивая клетки только при наличии стены снизу и пропуская проходы.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Закрашивание клеток в проходах.
Попытка пройти сквозь стену без предварительной проверки направления.
Остановка при первом проходе вместо продолжения обхода до конца стены.
Закрашивание клеток, которые не находятся непосредственно справа от вертикальной или выше горизонтальной стены.