15

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

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

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

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

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

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

7 шагов
1

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

2

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

3

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

4

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

5

В конце Робот возвращается к левой стене и движется вниз. Клетки левой стены закрашиваются только тогда, когда справа есть стена; клетки прохода остаются незакрашенными.

6

Один из допустимых вариантов алгоритма:

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

нц пока снизу несвободно
влево
кц
вниз

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

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

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

нц пока справа свободно
влево
кц

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

Ответ

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

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

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

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

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

Отсутствие закрашивания угловых клеток.

Использование фиксированного числа шагов вместо циклов с проверкой условий.

Завершение движения до обхода всех четырёх сторон.

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

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

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

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