Предмет: Информатика, автор: wwp23

Задача №1
Есть горизонтальный коридор высотой в 3 клетки. Робот в крайней левой клетке среднего ряда этого коридора. Он должен покрасить клетки ряда, отвечающие условию: у соседней сверху есть стенка сверху, а у соседней снизу есть стенка снизу.
Остановиться нужно в крайней правой клетке этого ряда.
Напиши функцию, чтобы проверить (а если надо — покрасить) каждую клетку ряда. Используй цикл «пока справа свободно».

Ответы

Автор ответа: valgrisa
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()), чтобы проверить надо ли закрашивать последнюю клетку коридора

Приложения:
Похожие вопросы
Предмет: Английский язык, автор: катя567891