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


Шешім по шагам
4 қадамСначала закрашиваем исходную клетку, расположенную справа от нижнего края вертикальной стены.
Пока слева не свободно, Робот находится справа от вертикальной стены. Он поднимается на одну клетку и закрашивает её. Цикл завершается в клетке выше верхнего конца вертикальной стены — в угловой клетке.
Из угловой клетки Робот движется влево. Пока снизу находится горизонтальная стена, а слева проход свободен, Робот перемещается и закрашивает клетку. После обхода горизонтальной стены условие цикла становится ложным.
Алгоритм не выходит за границы требуемой области: вверх Робот движется только вдоль правой стороны вертикальной стены, а влево — только над горизонтальной стеной.
алг
нач
закрасить
нц пока не слева свободно
вверх
закрасить
кц
нц пока (не снизу свободно) и (слева свободно)
влево
закрасить
кц
кон
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Использование цикла `нц пока сверху свободно`, из-за которого Робот может двигаться вверх бесконечно.
Проверка только возможности движения влево без проверки стены снизу.
Закрашивание клетки после выхода из требуемой области.
Пропуск закрашивания исходной или угловой клетки.