Объяснение
ИнформатикаЗадание 15. Алгоритм для исполнителя Робот
Бесплатно

Разбор задания 15. Алгоритм для исполнителя Робот — теория и разбор

Команды Робота, циклы «пока свободно» и алгоритм, работающий для поля любого размера — разбор примера и проверка в Python.

Сохранить и продолжить:

Задание 15. Алгоритм для исполнителя Робот — теория и разбор

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

Что нужно знать

У Робота девять команд.

Команды-приказы (пять): вверх, вниз, влево, вправо — сдвигают Робота на одну клетку; если по пути стена — Робот разрушается. Пятая — закрасить, закрашивает клетку, где Робот находится сейчас.

Команды проверки условия (четыре): сверху свободно, снизу свободно, слева свободно, справа свободно — проверяют, нет ли стены в соответствующем направлении, не двигая Робота.

Из проверок строятся управляющие конструкции:

если <условие> то
    <команды>
все

нц пока <условие>
    <команды>
кц

если...то...все выполняет команды один раз, если условие истинно. нц пока...кц повторяет команды, пока условие остаётся истинным — это и есть способ пройти комнату любого размера, не зная заранее, сколько клеток впереди. Команды исполнителя Робот: приказы и проверки условий

Размер поля в условии не задан явно и никогда не совпадает с тем, что нарисовано на картинке для примера — правильный алгоритм должен использовать нц пока <проверка направления>, а не заранее известное число шагов, иначе он сработает только на одном конкретном поле.

Правило оценивания: 2 балла — алгоритм работает для поля любого размера и конфигурации стен; 1 балл — алгоритм завершается и не разрушает Робота, но допускает немного (не больше 10) лишних или пропущенных закрашенных клеток; 0 баллов — Робот разрушается, алгоритм не завершается или решает только конкретную картинку из примера.

Разбор примера

Робот находится в левом верхнем углу прямоугольной комнаты неизвестного размера (стены — только по периметру, без проёмов). Закрасьте все клетки верхнего ряда комнаты и весь правый столбец, начиная от старта. Комната с закрашенными верхним рядом и правым столбцом

Как думать. Задача распадается на два независимых прохода вдоль стен: сначала пройти вправо до упора, закрашивая путь, затем — вниз до упора, тоже закрашивая. Оба прохода — циклы «пока свободно в нужную сторону».

Показать решение и ответ

Шаг 1. Закрашиваем стартовую клетку, затем двигаемся вправо, пока справа свободно, закрашивая каждую новую клетку — это проходит весь верхний ряд от старта до правой стены.

Шаг 2. Оказавшись в правом верхнем углу, двигаемся вниз, пока снизу свободно, закрашивая каждую новую клетку — это проходит весь правый столбец до нижней стены.

закрасить
нц пока справа свободно
    вправо
    закрасить
кц
нц пока снизу свободно
    вниз
    закрасить
кц

Оба цикла используют проверку направления, а не число шагов — поэтому алгоритм одинаково верно сработает для комнаты 3×3 и для комнаты 20×5.

Ответ: приведённый алгоритм (2 балла — работает при любом размере комнаты)

Как проверить логику в Python

Логику алгоритма Робота удобно проверить симуляцией на виртуальной сетке — если множество закрашенных клеток совпадает с ожидаемым (верхний ряд + правый столбец), алгоритм верен:

def run(width, height):
    x, y = 0, 0
    painted = {(x, y)}
    while x + 1 < width:      # аналог "нц пока справа свободно"
        x += 1
        painted.add((x, y))
    while y + 1 < height:     # аналог "нц пока снизу свободно"
        y += 1
        painted.add((x, y))
    return painted

for w, h in [(5, 3), (2, 2), (8, 6)]:
    result = run(w, h)
    expected = {(i, 0) for i in range(w)} | {(w - 1, j) for j in range(h)}
    print(w, h, result == expected)   # True для любого размера

Такая проверка — не часть решения на экзамене (там алгоритм пишут в среде исполнителя или текстом), а способ убедиться, что логика действительно универсальна.

Разбор задания 15. Алгоритм для исполнителя Робот — теория и разбор

По этой теме

Шпаргалка для задания 15. Исполнитель Робот
Бесплатно

Шпаргалка для задания 15. Исполнитель Робот

Компактная шпаргалка на 2 страницы по заданию 15 ОГЭ информатики «Исполнитель Робот»: формулы, алгоритм решения и разбор примера — держите под рукой при подготовке.

Шпаргалка для задания 16. Программирование
Бесплатно

Шпаргалка для задания 16. Программирование

Компактная шпаргалка на 2 страницы по заданию 16 ОГЭ информатики «Программирование»: формулы, алгоритм решения и разбор примера — держите под рукой при подготовке.

Шпаргалка для задания 14. Электронные таблицы
Бесплатно

Шпаргалка для задания 14. Электронные таблицы

Компактная шпаргалка на 2 страницы по заданию 14 ОГЭ информатики «Электронные таблицы»: формулы, алгоритм решения и разбор примера — держите под рукой при подготовке.

Шпаргалка для задания 13.2. Создание текстового документа
Бесплатно

Шпаргалка для задания 13.2. Создание текстового документа

13.2 Текстовый документ

Компактная шпаргалка на 2 страницы по заданию 13.2 ОГЭ информатики «Создание текстового документа»: формулы, алгоритм решения и разбор примера — держите под рукой при подготовке.

Разбор задания 15. Алгоритм для исполнителя Робот — теория и разбор | dnnd