РУҚА
15

Решение: Алгоритм для Робота

ОГЭ · Информатика · Задание 15 · Алгоритмы и исполнители
ВысокаяФИПИF8D5D8Развёрнутое решение≈ 15 минутРазбор в 5 шагов
Условие

Исполнитель Робот перемещается по бесконечному клетчатому полю. Между соседними по сторонам клетками могут находиться стены. Робот умеет выполнять команды «вверх», «вниз», «влево», «вправо» и «закрасить», а также проверять условия «сверху свободно», «снизу свободно», «слева свободно», «справа свободно». Условия можно использовать в командах «если», а для повторения команд — цикл «нц пока … кц».

На бесконечном поле есть горизонтальная и вертикальная стены. Левый конец горизонтальной стены соединён с нижним концом вертикальной стены. Длины стен неизвестны. В вертикальной стене есть ровно один проход; точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной непосредственно над горизонтальной стеной у её правого конца.

Напишите алгоритм, закрашивающий все клетки, расположенные непосредственно левее и правее вертикальной стены. Клетки прохода должны остаться незакрашенными. Робот не должен разрушиться, выполнение алгоритма должно завершиться, а алгоритм должен работать при любом допустимом расположении стен, прохода и его размерах. Робот должен закрасить только клетки, удовлетворяющие условию.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

5 шагов
1

Из исходной позиции Робот движется влево до вертикальной стены. Горизонтальная стена находится под Роботом, поэтому команда «влево» безопасна, пока слева свободно.

2

На правой стороне вертикальной стены Робот поднимается вверх. Если слева стена, текущая клетка является нужной клеткой справа от вертикальной стены, поэтому её нужно закрасить. Цикл прекращается, когда найден проход: слева становится свободно.

3

Через проход Робот переходит на левую сторону вертикальной стены.

4

На левой стороне Робот движется вниз до горизонтальной стены. Клетки закрашиваются только при наличии стены справа; в области прохода справа свободно, поэтому проход не закрашивается.

После достижения горизонтальной стены Робот движется вверх до верхнего конца вертикальной стены. По пути он снова закрашивает только клетки, у которых справа находится стена.

Ответ

нц пока слева свободно
влево
кц
нц пока (сверху свободно) и (не слева свободно)
если не слева свободно то
закрасить
все
вверх
кц
влево
нц пока снизу свободно
если не справа свободно то
закрасить
все
вниз
кц
нц пока сверху свободно
если не справа свободно то
закрасить
все
вверх
кц

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Закрашивание каждой клетки на стороне стены без проверки наличия стены, из-за чего закрашивается проход.

Попытка пройти через вертикальную стену вне прохода.

Отсутствие отдельной обработки левой стороны вертикальной стены.

Использование условия «сверху свободно» без проверки положения прохода, из-за чего цикл может завершиться не в нужном месте.

Закрепить приёмВ теме «Алгоритмы и исполнители» ещё 177 задач — с ответом и таким же разбором.
Тренироваться

Как решать задание 15 ОГЭ, информатика

Разбор этой задачи разложен на 5 шагов: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Алгоритмы и исполнители»: в ней 178 задач, и у каждой есть такой же разбор. Регистрация не нужна.