Вопрос:

Задача № 4 Робот находится где-то в прямоугольнике. Если хотя бы одна соседняя клетка, не отделенная стенкой, закрашена, то пусть робот закрасит исходную клетку. move_left() Сделать шаг влево move_right() Сделать шаг вправо move_up() Сделать шаг вверх move_down() Сделать шаг вниз fill_cell() Закрасить клетку free_from_up() Проверить, свободно ли сверху free_from_down() Проверить, свободно ли снизу free_from_left() Проверить, свободно ли слева free_from_right() Проверить, свободно ли справа wall_from_up() Проверить, есть ли стена сверху wall_from_down() Проверить, есть ли стена снизу wall_from_left() Проверить, есть ли стена слева wall_from_right() Проверить, есть ли стена справа cell_is_filled() Проверить, закрашена ли клетка cell_is_clean() Проверить, чиста ли клетка

Смотреть решения всех заданий с листа

Ответ:

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

  1. Проверить, закрашена ли клетка сверху и нет ли стены сверху.
  2. Если клетка сверху закрашена и нет стены, закрасить текущую клетку и завершить алгоритм.
  3. Проверить, закрашена ли клетка снизу и нет ли стены снизу.
  4. Если клетка снизу закрашена и нет стены, закрасить текущую клетку и завершить алгоритм.
  5. Проверить, закрашена ли клетка слева и нет ли стены слева.
  6. Если клетка слева закрашена и нет стены, закрасить текущую клетку и завершить алгоритм.
  7. Проверить, закрашена ли клетка справа и нет ли стены справа.
  8. Если клетка справа закрашена и нет стены, закрасить текущую клетку и завершить алгоритм.
  9. Если ни одна из соседних клеток не закрашена или отделена стеной, завершить алгоритм, не закрашивая текущую клетку.

Код программы на основе предложенных функций:

if ( (cell_is_filled() and free_from_up()) or
     (cell_is_filled() and free_from_down()) or
     (cell_is_filled() and free_from_left()) or
     (cell_is_filled() and free_from_right()) ) {
    fill_cell();
}

Ответ: Алгоритм для закрашивания клетки роботом, если хотя бы одна из соседних клеток закрашена и не отделена стеной, представлен выше.

ГДЗ по фото 📸
Подать жалобу Правообладателю