Вопрос:

Задача Робот находится в какой-то из клеток квадрата. Если он стоит в одном из огороженных углов, то ему надо переместиться в другой угол, если нет – остаться на месте. 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. Проверить, находится ли робот в верхнем левом углу:
    • Если wall_from_up() и wall_from_left() возвращают true, то робот находится в верхнем левом углу.
  2. Проверить, находится ли робот в верхнем правом углу:
    • Если wall_from_up() и wall_from_right() возвращают true, то робот находится в верхнем правом углу.
  3. Проверить, находится ли робот в нижнем левом углу:
    • Если wall_from_down() и wall_from_left() возвращают true, то робот находится в нижнем левом углу.
  4. Проверить, находится ли робот в нижнем правом углу:
    • Если wall_from_down() и wall_from_right() возвращают true, то робот находится в нижнем правом углу.
  5. Если робот находится в одном из углов, переместить его в другой угол:
    • Например, если робот в верхнем левом углу, можно переместить его в нижний правый угол, используя команды move_down() и move_right() до тех пор, пока он не достигнет стен.
  6. Если робот не находится ни в одном из углов, ничего не делать.

Пример кода на псевдокоде:

если wall_from_up() и wall_from_left() тогда
    пока не wall_from_down() выполнить
        move_down()
    конец цикла
    пока не wall_from_right() выполнить
        move_right()
    конец цикла
иначе если wall_from_up() и wall_from_right() тогда
    // Аналогично для других углов
иначе если wall_from_down() и wall_from_left() тогда
    // Аналогично для других углов
иначе если wall_from_down() и wall_from_right() тогда
    // Аналогично для других углов
конец если

Этот алгоритм предполагает, что у робота есть возможность определять наличие стен вокруг себя и двигаться в заданном направлении.

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

ГДЗ по фото 📸