Открытый банк заданий ОГЭ Информатика 5E59CE (задание 15.1)

Открытый банк заданий ОГЭ Информатика 5E59CE (задание 15.1)Ах, этот наш доблестный Робот! Представьте себе: маленький механический герой с девятью командами в арсенале, который пытается не только выжить в лабиринте из стен и проходов, но ещё и раскрасить внутренние стены прямоугольника так, чтобы ни один проход не пострадал.

Звучит как сюжет для научно-фантастического комедийного сериала, где каждый шаг – это испытание на прочность и смекалку.

Итак, у нашего Робота есть четыре основные команды-приказа: вверх, вниз, влево и вправо. Похоже на управление старой игрушечной машинкой, только если он вдруг решит пройти сквозь стену – бац!

– и капут. Как говорится, не пытайтесь повторить это дома. Чтобы избежать такой трагедии, Робот обладает ещё четырьмя командами проверки: свободно ли сверху? А снизу?

Слева? Справа?

Это как спросить у соседей по комнате: «Можно пройти?» Только тут соседи – это стены.

И вот начинается настоящая магия программирования с условием «если». Например: если справа свободно, то иди вправо и закрась клетку.

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

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

И всё это на бесконечном поле! Кто бы мог подумать, что бесконечность может быть такой сложной задачей для маленького робота?

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

Ведь проходы могут быть где угодно (кроме углов), а размеры их неизвестны — настоящий вызов даже для опытного программиста.

Как сказал один мой знакомый программист после первой попытки написать этот алгоритм: «Я чувствую себя как Робинзон Крузо среди кода — пытаюсь построить плот из условий и циклов!» И правда, наш робот должен двигаться вверх вдоль левой стены пока справа есть стена (то есть пока он не дойдёт до верхнего края). Затем сделать шаг вправо — словно заглянуть за уголок — после чего продолжить движение вверх пока слева нет стены.

Тут важно не ошибиться: если идти слишком далеко или повернуть неправильно — привет разрушение!

Далее начинается веселье с циклами «пока» — наш робот закрашивает клетки сверху вниз или слева направо в зависимости от того, где находится стена. Представьте себе этого железного малютку с кисточкой вместо руки (ну или виртуальной кисточкой) аккуратно обходящего внутренний периметр прямоугольника.

Если бы он был человеком, я уверен: «Пожалуйста, не трогайте мои проходы!» стал бы его любимым лозунгом.

Кстати говоря, эта задача напоминает старую шутку про программиста: приходит он домой поздно ночью и говорит жене: «Не волнуйся, я написал программу обхода лабиринта». Жена отвечает: «Ты хотя бы знаешь куда идёшь?» На что программист спокойно отвечает: «Нет… но зато теперь знаю точно где стены».

This entry was posted in Разное. Bookmark the permalink.