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


Шешім по шагам
6 қадамРобот спускается вдоль левой стороны вертикальной стены до клетки, расположенной непосредственно над горизонтальной стеной.
Пока снизу нет прохода, Робот закрашивает текущую клетку и перемещается влево. Так закрашиваются все клетки над горизонтальной стеной справа от прохода.
Через проход Робот спускается на нижнюю сторону стены.
Справа от прохода Робот закрашивает нижние клетки и перемещается вправо до вертикальной стены.
Затем Робот перемещается влево до прохода, поднимается через него и снова спускается в клетку слева от прохода.
На нижней стороне слева от прохода Робот закрашивает клетки, пока сверху не станет свободно. Последняя клетка за левым концом стены не закрашивается.
нц пока снизу свободно вниз кц
нц пока не снизу свободно
закрасить
влево
кц
вниз
закрасить
нц пока справа свободно
вправо
закрасить
кц
нц пока не сверху свободно
влево
кц
вверх
влево
нц пока не сверху свободно
закрасить
если слева свободно то
влево
все
кц
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Закрашивание клеток прохода.
Попытка пройти сквозь вертикальную или горизонтальную стену.
Отсутствие обработки одной из частей горизонтальной стены по одну сторону от прохода.
Бесконечный цикл при движении за левый конец горизонтальной стены.
Закрашивание лишней клетки за концом горизонтальной стены.