Вопрос:

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

Фотография

Ответ ассистента

Для решения задачи, где Робот находится в неизвестном месте прямоугольника с одной горизонтальной перегородкой и должен оказаться в левом верхнем углу, нужно сначала переместить его до упора вверх, затем до упора влево. Если Робот упрётся в горизонтальную стенку, он должен найти в ней проход, двигаясь вдоль неё, пройти сквозь него и снова двигаться к цели. Алгоритм на языке Робота: 1. Идём вверх до упора в границу или стенку: `while free_from_up():` ` move_up()` 2. Если мы упёрлись именно в стенку (а не в верхнюю границу поля), ищем проход (двигаемся вправо, пока сверху стена): `while wall_from_up():` ` move_right()` 3. Когда нашли проход, делаем шаг вверх и идём до самой верхней границы: `if free_from_up():` ` move_up()` `while free_from_up():` ` move_up()` 4. Теперь, когда мы в верхнем коридоре, идём до упора влево в угол: `while free_from_left():` ` move_left()`

Другие решения

Что ещё задавали пользователи