Разбор задания 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 — это и есть требуемая универсальность.

Стратегия на экзамене

  1. Определите ориентир: вдоль какой стены движется Робот, что служит сигналом остановки.
  2. Напишите главный цикл нц пока с этим ориентиром.
  3. Внутри — закраска и шаг.
  4. После цикла обработайте последнюю клетку.
  5. Прогоните алгоритм пошагово в КуМире и мысленно поменяйте размер поля.

Попробуй сам

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

Частые ошибки

  • Жёсткие «вправо N раз» вместо нц пока — провал на поле другого размера.
  • Не закрасить последнюю клетку (или закрасить лишнюю).
  • Неверный ориентир: Робот теряет стену и уходит не туда.
  • Не сохранить файл решения — на ОГЭ это критично.

Итог

  • 15.1 требует универсального алгоритма для любого поля класса.
  • Основа — цикл нц пока с правильным ориентиром-стеной.
  • Типовые сюжеты: коридор, вдоль стены, периметр, лестница.
  • Почти всегда нужна отдельная обработка последней клетки.
Проверьте себя
1. Почему в задании 15.1 нельзя написать «вправо 7 раз» вместо цикла «нц пока»?
AКоманды с числом запрещены синтаксисом
BПри проверке размеры поля меняются, и жёсткое число повторов не сработает
CЦикл выполняется быстрее
DРобот не умеет ходить вправо
2. Что почти всегда нужно сделать после главного цикла «нц пока … вправо … кц»?
AСохранить файл
BОбработать (закрасить) последнюю клетку у стены
CПерезапустить Робота
DУдалить лишние стены
3. Что в решении 15.1 называют «ориентиром»?
AЦвет клетки
BСтену, вдоль которой движется Робот и которая сигнализирует об остановке
CКоординаты центра поля
DНомер строки кода
Поддержать проект