15

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

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

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

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

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

5 шагов
1

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

2

Если сверху проход, текущую клетку не закрашивают. Робот смещается на одну клетку вниз и проходит проход по нижней линии до тех пор, пока сверху снова не появится стена. Затем возвращается на клетку непосредственно под стеной.

3

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

4

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

После прохождения нижнего конца вертикальной стены алгоритм заканчивается. Все клетки проходов остаются незакрашенными.

Ответ

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

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

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

Закрашивание клеток, находящихся напротив проходов.

Попытка пройти сквозь стену.

Отсутствие обработки прохода в горизонтальной или вертикальной стене.

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

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

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

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

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