Вопрос:

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

Ответ:

Решение:

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

Алгоритм:

  1. Проверить, свободно ли сверху: Если да, сделать шаг вверх (move_up).
  2. Если сверху стена: Проверить, свободно ли справа (free_from_right).
  3. Если справа свободно: Сделать шаг вправо (move_right).
  4. Если справа стена: Проверить, свободно ли снизу (free_from_down).
  5. Если снизу свободно: Сделать шаг вниз (move_down).
  6. Если снизу стена: Проверить, свободно ли слева (free_from_left).
  7. Если слева свободно: Сделать шаг влево (move_left).

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

Пример программы (один из возможных вариантов):

move_up
move_right
move_right
move_down
fill_cell

Примечание: Точная программа зависит от конкретного расположения старта и финиша. Изображение демонстрирует возможный путь, но универсальное решение должно учитывать все три стартовые точки.

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