py.user.next
Ты должен пройти налево до препятствия.
Проверить, произошёл ли выход из ограждённой области.
Если выход произошёл, то перейти к процедуре перехода в конечную точку.
Если выход не произошёл, то ты должен идти направо до препятствия.
Проверить, произошёл ли выход из ограждённой области.
Если выход произошёл, то перейти к процедуре перехода в конечную точку.
Если выход не произошёл, то ты должен завершить выполнение.
Так как процедуры там тоже ещё не пройдены, то и процедур не должно быть. Всё нужно сделать без процедур (функций) и без флагов.
спасибище!
код написал, правда чет не сразу осилил.
Почему-то в варианте с выходом слева шарик поднимался до левого угла, а потом уходил направо и там останавливался пока в точке (!) я не поменял условие. Изначально было if wall_is_on_the_left() and wall_is_above():
from pyrob.api import * @task def task_8_29(): while not wall_is_on_the_left() and wall_is_above(): # пройти налево до препятствия. move_left() if not wall_is_above(): #Проверить, произошёл ли выход из ограждённой области. move_up() while not wall_is_above(): # поднялся в левый верхний угол и остановился move_up() if wall_is_on_the_left() and wall_is_beneath(): # (!) Если выход не произошёл -идти направо до препятствия while not wall_is_on_the_right() and wall_is_above(): move_right() if not wall_is_above(): #Проверить, произошёл ли выход из ограждённой области move_up() while not wall_is_above(): move_up() while not wall_is_on_the_left(): move_left() #Остановиться в верхнем левом углу if __name__ == '__main__': run_tasks()