Предмет: Информатика,
автор: wwp23
Задача №1
Есть горизонтальный коридор высотой в 3 клетки. Робот в крайней левой клетке среднего ряда этого коридора. Он должен покрасить клетки ряда, отвечающие условию: у соседней сверху есть стенка сверху, а у соседней снизу есть стенка снизу.
Остановиться нужно в крайней правой клетке этого ряда.
Напиши функцию, чтобы проверить (а если надо — покрасить) каждую клетку ряда. Используй цикл «пока справа свободно».
Ответы
Автор ответа:
4
Ответ:
def P():
move_up()
if wall_from_up():
move_down()
move_down()
if wall_from_down():
move_up()
fill_cell()
else:
move_up()
else:
move_down()
while free_from_right():
P()
move_right()
P()
Объяснение:
В функции (def P():):
поднимаемся на 1 клетку вверх
используя полное ветвление с условием (if wall_from_up():) если ли сверху стена
то (если условие wall_from_up() истинно) спускаемся на 2 клетки вниз
- используя вложенное полное ветвление с условием (if wall_from_down():) если ли снизу стена
- то (если условие wall_from_down() истинно) поднимаемя на 1 клетку вверх и закрашиваем клетку
- иначе (если условие wall_from_down() ложно) поднимаемя на 1 клетку вверх
иначе (если условие wall_from_up() ложно) спускаемся на 1 клетку вниз
В основной программе используем
цикл с предусловием (while free_from_right():)
- вызываем функцию по имени (P())
- двигаемся на 1 клетку вправо (move_right())
ещё раз вызываем функцию по имени (P()), чтобы проверить надо ли закрашивать последнюю клетку коридора
Приложения:
Похожие вопросы
Предмет: Русский язык,
автор: foxifazber2016
Предмет: Английский язык,
автор: катя567891
Предмет: Русский язык,
автор: tatya1987
Предмет: Русский язык,
автор: Аноним
Предмет: Математика,
автор: paksv299