Шешімі: Алгоритм для Робота
Исполнитель Робот перемещается по бесконечному полю, разбитому на клетки. Между соседними по сторонам клетками могут находиться стены. Робот умеет выполнять команды «вверх», «вниз», «влево», «вправо», «закрасить», а также проверять условия «сверху свободно», «снизу свободно», «слева свободно», «справа свободно». Условия можно использовать с командами «если» и «пока».
На бесконечном поле есть горизонтальная и вертикальная стены. Левый конец горизонтальной стены соединён с нижним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной непосредственно над горизонтальной стеной у её правого конца.
Напишите алгоритм, закрашивающий все клетки, расположенные непосредственно выше горизонтальной стены и правее вертикальной стены. Проходы должны остаться незакрашенными. Робот должен закрасить только клетки, удовлетворяющие этому условию. Алгоритм должен работать для любого допустимого расположения стен и проходов, не приводить к разрушению Робота и завершаться.
Шешім по шагам
5 қадамРобот движется влево, пока справа свободно. Это условие позволяет завершить алгоритм после обнаружения вертикальной стены.
Если снизу несвободно, робот находится непосредственно над горизонтальной стеной, поэтому клетку нужно закрасить.
Если снизу свободно, робот находится над проходом. Он спускается вниз. В обычном проходе справа свободно, поэтому робот возвращается вверх.
После перехода влево за левый конец горизонтальной стены робот спускается в клетку слева от вертикальной стены. Справа оказывается стена, условие цикла становится ложным, и выполнение завершается.
Один из подходящих алгоритмов:
нц пока справа свободно
если снизу свободно то
вниз
если справа свободно то
вверх
все
иначе
закрасить
все
влево
кц
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Закрашивание клеток в проходах.
Отсутствие проверки направления справа, из-за чего алгоритм не завершается.
Попытка пройти сквозь вертикальную или горизонтальную стену.
Перемещение влево до бесконечности без условия завершения.