Найти - Пользователи
Полная версия: Графический исполнитель "Робот"
Начало » Python для новичков » Графический исполнитель "Робот"
1 2 3 4 None 9 10 11 12 13 14 15 16 None 28 29 30 31
FishHook
Sevastian
Реализуйте элементарный алгоритм выхода из любого лабиринта - правило одной руки - и вы решите сразу все подобные задачи
Sevastian
FishHook
SevastianРеализуйте элементарный алгоритм выхода из любого лабиринта - правило одной руки - и вы решите сразу все подобные задачи
правило это работает только когда мы заходим в лабиринт с какой то заданной точки, а по заданию робот уже в лабиринте и выход есть, знаем что он сверху но не знаем где
py.user.next
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]$
FishHook
Sevastian
А если хорошо подумать, то всё прекрасно работает.
Вот так будет работать метод правой руки на сложной для вас задаче №18.

Sevastian
py.user.next
не работает в случае если выход находится сразу над роботом, как обойти?
py.user.next
Sevastian
не работает в случае если выход находится сразу над роботом, как обойти?
Чего не работает? Скидывай код сюда.
DevilDemonn
Увидел, тут люди скидывали свои варианты решения Задача №30: task_9_3
Решил поделиться своим

 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()
SabreFencing
Здравствуйте! не могу решить задачу, застрял https://mipt-cs.github.io/python3-2017-2018/labs/lab2.html#o13-task-8-10 (Задача №13: task_8_10)

вот мой код
когда две стенки сверху и снизу он перепрыгивает на след., не могу понять как нужно исправить

while wall_is_beneath() and wall_is_above():
move_right()
if wall_is_above():
move_down()
fill_cell()
move_up()
elif wall_is_beneath():
move_up()
fill_cell()
move_down()
elif not wall_is_beneath() and not wall_is_above():
move_down()
fill_cell()
move_up(2)
fill_cell()
move_down()
while not wall_is_on_the_right():
move_right()
if wall_is_beneath() and wall_is_above():
move_right()
elif wall_is_above():
move_down()
fill_cell()
move_up()
elif wall_is_beneath():
move_up()
fill_cell()
move_down()
elif not wall_is_beneath() and not wall_is_above():
move_down()
fill_cell()
move_up(2)
fill_cell()
move_down()


Большое спасибо!
py.user.next
SabreFencing
Здравствуйте! не могу решить задачу
SabreFencing
Задача №13: task_8_10
Здесь делал.
SabreFencing
Большое вам спасибо!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB