Робот где-то в прямоугольнике. Он должен закрасить исходную клетку, если выполняются два условия:
- у клетки, расположенной над исходной, есть стена сверху;
- у клетки, расположенной под исходной, есть стена снизу.
КОМАНДЫ:
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()
Проверить, чиста ли клетка
Answers & Comments
Verified answer
Ответ:
move_down()
if wall_from_down():
move_up()
move_up()
if wall_from_up():
move_down()
fill_cell()
else:
move_down()
else:
move_up()
Объяснение:
сначала спускаемся вниз
используем полный условный оператор (условие: есть ли там стена)
если есть, то идём наверх
используем вложенный условный оператор (условие: есть ли там стена)
если есть, то спускаемся вниз и закрашиваем клетку
иначе спускаемся вниз
иначе поднимаемся вверх (вернулись к первому условному оператору)