Задание 15. Алгоритм для исполнителя Робот — теория и разбор
Совет: выделите текст, чтобы спросить у ИИ, или наведите (на телефоне — тапните) на подчёркнутое слово — увидите подсказку.
Задание 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 для любого размера
Такая проверка — не часть решения на экзамене (там алгоритм пишут в среде исполнителя или текстом), а способ убедиться, что логика действительно универсальна.
Похожие материалы
Задание 16. Программирование на языке программирования — теория и разбор
Типовой шаблон решения: цикл + условие делимости + счётчик — разбор примера на Python и Паскале.
Задание 14. Обработка данных в электронной таблице — теория и разбор
СЧЁТЕСЛИ, СУММЕСЛИ и круговая диаграмма для большого массива данных — разбор примера и проверка в Python.
Задание 13.2. Создание текстового документа — теория и разбор
13.2 Текстовый документ
Критерии оценивания текста и таблицы по образцу: отступы, выравнивание, формат файла — разбор примера и чек-лист.
Задание 13.1. Создание презентации — теория и разбор
13.1 Презентация
Критерии оценивания презентации из 3 слайдов: структура, шрифт, изображения, формат файла — разбор примера и чек-лист.
Задание 12. Файловая система: количество и объём файлов — теория и разбор
Маски имён файлов (* и ?) и перевод байтов в килобайты по степеням двойки — разбор примера и проверка в Python.
Задание 11. Поиск информации в файлах и каталогах — теория и разбор
Двухшаговая техника поиска: найти файл среди папок, затем найти фразу внутри файла — разбор примера и проверка в Python.