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

Ответы на вопрос

Ответ:
Объяснение:
использовать Робот
алг
нач
нц пока справа свободно
вправо
нц пока сверху стена
закрасить; выход
кц
кц
нц если справа стена то
закрасить; вниз
иначе вниз
все
кц_при справа стена
нц если справа стена то
закрасить; вниз
иначе выход
все
кц
кон
Возможно, немного коряво, но работает. Там есть пара нюансов. На горизонтальной стене может быть сколько угодно проходов, он их все пропустит, пока не упрется в вертикальную.
На вертикальной стене проход может быть только один. Когда у робота кончится слева стена второй раз - он остановится. Конечно, на бесконечном поле его можно было не останавливать, он просто будет уходить бесконечно далеко вниз, занимая память компьютера, но это неправильно.





Для того чтобы робот мог закрасить все клетки, расположенные непосредственно ниже горизонтальной стены и левее вертикальной стены, кроме клетки, в которой он находится перед выполнением программы, можно использовать следующий алгоритм. Алгоритм будет двигаться по клеткам сначала вниз, а затем влево, при этом пропуская проходы.
- Помечаем текущую клетку как закрашенную.
- Пока справа от робота нет вертикальной стены: a. Двигаемся вправо на одну клетку. b. Помечаем текущую клетку как закрашенную.
- Двигаемся вниз на одну клетку.
- Пока не достигнут вертикальной стены: a. Двигаемся вниз на одну клетку. b. Помечаем текущую клетку как закрашенную.
- Двигаемся влево на одну клетку.
- Пока не вернемся к исходной позиции: a. Двигаемся влево на одну клетку. b. Помечаем текущую клетку как закрашенную.
- Завершаем выполнение программы.
Этот алгоритм гарантированно закрасит все необходимые клетки, оставляя проходы незакрашенными, и вернет робота в исходную позицию.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili