Привет! Давай разберемся с этой задачей.
Что нам нужно сделать?
Робот находится в верхнем левом углу квадрата 2х2. В квадрате есть одна вертикальная стенка, но мы не знаем, где именно. Наша задача — закрасить весь квадрат и остановить робота где угодно.
Какие команды у нас есть?
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 — проверить, есть ли стена сверху или снизу.Как будем решать?
Поскольку мы не знаем, где находится стенка, нам нужно действовать так, чтобы обойти ее и закрасить все клетки.
fill_cell().free_from_right().move_right(). Теперь мы во второй клетке верхнего ряда. Закрашиваем ее: fill_cell().free_from_down().move_down(). Теперь мы в нижней клетке первого столбца (под первой клеткой). Закрашиваем ее: fill_cell().free_from_down().move_down(). Теперь мы в нижней правой клетке. Закрашиваем ее: fill_cell().Обобщенный алгоритм:
Мы можем двигаться по клеткам, закрашивая их. Главное — не упереться в стенку.
Вот один из возможных вариантов решения:
fill_cell()move_right()fill_cell()move_down()fill_cell()move_left()fill_cell()Этот алгоритм предполагает, что мы двигаемся по часовой стрелке, закрашивая клетки. Он сработает независимо от того, где находится вертикальная стенка.
Ответ:
fill_cell()
move_right()
fill_cell()
move_down()
fill_cell()
move_left()
fill_cell()