Sevastian
Реализуйте элементарный алгоритм выхода из любого лабиринта - правило одной руки - и вы решите сразу все подобные задачи
FishHookправило это работает только когда мы заходим в лабиринт с какой то заданной точки, а по заданию робот уже в лабиринте и выход есть, знаем что он сверху но не знаем где
SevastianРеализуйте элементарный алгоритм выхода из любого лабиринта - правило одной руки - и вы решите сразу все подобные задачи
Sevastian
а как правильно с задачей 18 справиться?
цикл пока справа_нет_стены выполнять
шагнуть вправо
конец цикла
цикл пока слева_нет_стены выполнять
если сверху_нет_стены то
выйти из цикла
конец если
шагнуть влево
конец цикла
цикл пока сверху_нет_стены выполнять
шагнуть вверх
конец цикла
цикл пока слева_нет_стены выполнять
шагнуть влево
конец цикла
[guest@localhost pyrob]$ python3 task_18.py
INFO:pyrob:Starting task task_8_28
INFO:pyrob:Task task_8_28 finished: +
INFO:pyrob:Total: 1/1
[guest@localhost pyrob]$
SevastianА если хорошо подумать, то всё прекрасно работает.
py.user.nextне работает в случае если выход находится сразу над роботом, как обойти?
SevastianЧего не работает? Скидывай код сюда.
не работает в случае если выход находится сразу над роботом, как обойти?
from pyrob.api import * @task(delay=0.15) def task_9_3(): # Check size x = 0 while not wall_is_on_the_right(): move_right() x += 1 else: move_left(x) ############ base = x while x > 1: for i in range (x): move_right() if not i == x-1: fill_cell() for i in range (x): move_down() if not i == x-1: fill_cell() for i in range (x): move_left() if not i == x-1: fill_cell() for i in range (x): move_up() if not i == x-1: fill_cell() move_down() move_right() x -= 2 else: move_down(int(base/2)) move_left(int(base/2)) if __name__ == '__main__': run_tasks()