Разбор задания 15.1 ОГЭ: типовые сюжеты и шаблоны
Сердце подготовки: разбираем, как устроено задание 15.1 ОГЭ и какими шаблонами оно решается.
Задание 15.1 ОГЭ — написать для Робота в КуМире алгоритм, который правильно работает на любом поле заданного класса, а не только на картинке из условия.
Как звучит задание
В условии даётся поле с Роботом, стенами и описание: «закрасьте все клетки вдоль стены», «пройдите по коридору», «закрасьте клетки слева и справа от стены». Ключевая фраза: «Размеры стен и поля при проверке могут быть другими». Поэтому решение должно быть универсальным: никаких «вправо ровно 7 раз» — только циклы нц пока с проверками обстановки.
Алгоритм проверяется автоматически на нескольких полях. Если он закрасил всё нужное и ничего лишнего на каждом из них — задание засчитано.
Базовый шаблон
Почти любое решение 15.1 строится так:
использовать Робот
алг
нач
| 1) дойти до ориентира (стены)
| 2) идти вдоль стены циклом нц пока, закрашивая клетки
| 3) обработать последнюю клетку
кон
Сюжет 1: коридор (двигаться до стены)
Робот в начале коридора, надо закрасить весь коридор до стены:
использовать Робот
алг
нач
нц пока справа свободно
закрасить
вправо
кц
закрасить
кон
Работает при любой длине коридора. Последняя клетка закрашивается после цикла.
Сюжет 2: вдоль стены (стена сбоку служит ориентиром)
Робот должен идти вправо вдоль нижней стены и закрашивать клетки, пока стена снизу не кончится:
использовать Робот
алг
нач
нц пока снизу стена
закрасить
если справа свободно
то вправо
иначе выход
всё
кц
кон
Здесь ориентир — стена снизу. Команда выход досрочно прерывает цикл, если справа возникла стена (край поля). Часто, впрочем, достаточно простого условия снизу стена и справа свободно.
Сюжет 3: периметр прямоугольной стены
Внутри поля стоит прямоугольная стена, надо обойти её по периметру, закрашивая клетки вокруг. Идея — четыре раза «идти вдоль стороны до угла». Удобно вынести «проход вдоль стороны» во вспомогательный алгоритм. Каркас:
использовать Робот
алг
нач
| идём вверх вдоль левой стороны
нц пока справа стена
закрасить
вверх
кц
| у верхнего угла повернём и пойдём вправо вдоль верхней стороны
| ... аналогично для остальных сторон
кон
Главный приём — ориентир «справа стена» (или другой стороной) держит Робота прижатым к обходимой стене.
Сюжет 4: лестница
Стена идёт ступеньками. Робот повторяет «шаг вдоль ступеньки, шаг вверх/вниз». Это сочетание двух коротких циклов, помещённое во внешний цикл «пока не дошли до края»:
использовать Робот
алг
нач
нц пока справа свободно или снизу свободно
нц пока снизу стена
закрасить
вправо
кц
нц пока снизу свободно
вниз
кц
кц
кон
Идея лестницы: пока под нами стена — идём по горизонтальной ступеньке; как только под нами стало свободно — спускаемся к следующей ступеньке. Под конкретное условие задачи шаблон подгоняют.
Имитация коридора на Python
Проверим шаблон «коридор» на массиве произвольной длины — алгоритм должен закрасить всё:
def projti_koridor(n):
field = [0] * n
c = 0
while c < n - 1: # пока справа свободно
field[c] = 1 # закрасить
c += 1 # вправо
field[c] = 1 # закрасить последнюю
return field
for n in [3, 7, 1]:
f = projti_koridor(n)
print("n =", n, "->", "".join("#" if x else "." for x in f))
Вывод:
n = 3 -> ### n = 7 -> ####### n = 1 -> #
Один и тот же алгоритм закрасил коридоры длины 3, 7 и даже 1 — это и есть требуемая универсальность.
Стратегия на экзамене
- Определите ориентир: вдоль какой стены движется Робот, что служит сигналом остановки.
- Напишите главный цикл
нц покас этим ориентиром. - Внутри — закраска и шаг.
- После цикла обработайте последнюю клетку.
- Прогоните алгоритм пошагово в КуМире и мысленно поменяйте размер поля.
Попробуй сам
Возьмите шаблон «коридор» и переделайте его так, чтобы Робот двигался вниз до нижней стены, закрашивая клетки. Подсказка: замените справа свободно на снизу свободно и вправо на вниз.
Частые ошибки
- Жёсткие «вправо N раз» вместо
нц пока— провал на поле другого размера. - Не закрасить последнюю клетку (или закрасить лишнюю).
- Неверный ориентир: Робот теряет стену и уходит не туда.
- Не сохранить файл решения — на ОГЭ это критично.
Итог
- 15.1 требует универсального алгоритма для любого поля класса.
- Основа — цикл
нц покас правильным ориентиром-стеной. - Типовые сюжеты: коридор, вдоль стены, периметр, лестница.
- Почти всегда нужна отдельная обработка последней клетки.