РУҚА
15

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

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

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

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

Условие как в банке ФИПИ — открыть и сверить
Дайте развернутый ответ.

Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.

У Робота есть девять команд. Четыре команды – это команды-приказы:

вверх вниз влево вправо

При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится.

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

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

сверху свободно снизу свободно слева свободно справа свободно

Эти команды можно использовать вместе с условием «eсли», имеющим следующий вид:

если условие то

последовательность команд

все

Здесь условие – одна из команд проверки условия.

Последовательность команд – это одна или несколько любых команд-приказов.

Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:

если справа свободно то

вправо

закрасить

все

В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:

если (справа свободно) и (не снизу свободно) то

вправо

все

Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:

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

последовательность команд

кц

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:

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

вправо

кц

Выполните задание.

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

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.



Ответ

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

Открыть разбор
!
3 уровня: от лёгкого толчка до почти готового решения. Следующий открывается, когда прочитан предыдущий, — чтобы не перепрыгнуть сразу к ответу.
1Мягкая — с чего смотретьуровень 1 из 3

Как по условию «снизу свободно» отличить клетку вне стены от клетки, расположенной непосредственно над стеной?

2Наводящая — какие числа считатьуровень 2 из 3

Сначала перемещайтесь влево, пока слева свободно и снизу нет прохода. Затем закрасьте левую крайнюю клетку и двигайтесь вправо, пока снизу находится стена.

3Прямая — фактически решениеуровень 3 из 3

Используйте два цикла: первый ищет левый конец стены, второй закрашивает клетки слева направо до правого конца.

Всё равно не складывается?Полное решение с обоснованием каждого шага — на отдельной странице.
Открыть решение

Задание 15 ОГЭ, информатика

Задача из темы «Алгоритмы и исполнители»: в ней 178 задач с ответом и разбором по шагам. В 15-м номере бланка — 75 задач.

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