Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 8, 2022 17:04:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

imagion
нужно решение 31го задания
Тут делал задачу 31.

imagion
в виде рабочего кода
  
def task_8_30():
    f_search_hole = True
    while f_search_hole:
        f_search_hole = False
        while not wall_is_on_the_right():
            move_right()
            while not wall_is_beneath():
                move_down()
                f_search_hole = True
        while not wall_is_on_the_left():
            move_left()
            while not wall_is_beneath():
                move_down()
                f_search_hole = True
Это псевдокод из того сообщения, переписанный точь в точь на питон. Лучше учись с псевдокодом работать. Сначала пишешь псевдокод полностью, а потом пишешь код по этому псевдокоду. Иначе будешь каким-нибудь очередным дурачком-выпускничком из школы Skillbox, который нихера вообще делать не умеет в итоге, зато кошелёк опустошил изрядно свой.



Отредактировано py.user.next (Янв. 8, 2022 17:09:58)

Офлайн

#2 Янв. 9, 2022 08:06:41

imagion
Зарегистрирован: 2022-01-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

Спасибо ,но только код не работает.
можешь объяснить что такое “f_search_hole” , я так понимаю это флаг, но как он работает, в том смысле , что у него внутри.

Офлайн

#3 Янв. 9, 2022 21:53:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

imagion
но только код не работает
Выложи полный код, который запускаешь. У меня запускается всё.

imagion
можешь объяснить что такое “f_search_hole” , я так понимаю это флаг, но как он работает, в том смысле , что у него внутри.
Флаг переводится как “искать дыру”. Если полностью его писать, то будет flag_search_for_the_hole , но лишние слова убираем и слово flag сокращаем, делая из него префикс.
Пока дано указание искать дыру (значение флага выставлено в истину), остальной код, проверяя этот флаг, ищет дыру. Когда дано указание не искать дыру (значение флага выставлено в ложь), остальной код, проверяя этот флаг, не ищет дыру.

Таким образом, цикл всё время крутится (спускается от уровня к уровню), пока флаг сообщает, что надо продолжать искать дыру. Как только входишь в цикл, флаг сразу выключается. Если дыра будет найдена, то шарик перейдёт на новый уровень и надо будет снова искать дыру на этом новом уровне, поэтому флаг опять включится. А если дыра не будет найдена, флаг так и останется выключенным, потому что дыра не будет найдена только на последнем уровне.

Флаг этот можно и по-другому назвать. Типа f_seen_last_level - “видел последний уровень”.
Тогда код поменяется с истины на ложь и со лжи на истину
флаг_видел_последний_уровень := нет
цикл пока не флаг_видел_последний_уровень выполнять
флаг_видел_последний_уровень := да
цикл пока справа_нет_стены выполнять
шагнуть вправо
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_видел_последний_уровень := нет
конец цикла
конец цикла
цикл пока слева_нет_стены выполнять
шагнуть влево
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_видел_последний_уровень := нет
конец цикла
конец цикла
конец цикла
  
def task_8_30():
    f_seen_last_level = False
    while not f_seen_last_level:
        f_seen_last_level = True
        while not wall_is_on_the_right():
            move_right()
            while not wall_is_beneath():
                move_down()
                f_seen_last_level = False
        while not wall_is_on_the_left():
            move_left()
            while not wall_is_beneath():
                move_down()
                f_seen_last_level = False
Но видишь, когда флаг сделан в форме “искать дыру”, код менее запутан отрицаниями всякими и выглядит чётче и определённее. Сразу понятно, что нужно делать и чего не нужно делать.



Отредактировано py.user.next (Янв. 9, 2022 22:00:56)

Офлайн

#4 Май 21, 2022 21:05:10

Omenn
Зарегистрирован: 2022-05-11
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

py.user.next
На псевдокоде рабочий код (проверял на реальном)

флаг_искать_проход := да
цикл пока флаг_искать_проход выполнять
флаг_искать_проход := нет
цикл пока справа_нет_стены выполнять
шагнуть вправо
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_искать_проход := да
конец цикла
конец цикла
цикл пока слева_нет_стены выполнять
шагнуть влево
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_искать_проход := да
конец цикла
конец цикла
конец цикла

Спасибо, все получилось!
Но флаги еще не изучал, поэтому вопрос: можно эту задачу решить без флагов? Попробовал составить блок-схему - какая-то замудреная очень получается…

Отредактировано Omenn (Май 21, 2022 21:09:13)

Офлайн

#5 Май 22, 2022 00:12:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

Omenn
Но флаги еще не изучал
Эта задача на флаги.
Там на странице с заданиями идёт вставка
Использование переменных-флагов и переменных-счётчиков

Обратите внимание на то, что в этих задачах ситуативное поведение Робота не может решить задачу. В задачах требуется запомнить состояние или посчитать количество определённых клеток. Используйте для этого переменные.
И с 27-ой задачи нужно использовать эти инструменты - либо счётчики, либо флажки.

Omenn
можно эту задачу решить без флагов?
Эта задача специально придумана так, чтобы её нельзя было решить без флагов. Ты её не решишь без флагов. Это искусственная задача, направленная на развитие навыка создания флажка. Решая её, ты учишься придумывать флаги.

Omenn
Но флаги еще не изучал
Значит, тебе рано решать эту задачу.

Дело-то не в этой задаче; дело в том, что есть целое множество задач в реальном мире, где нужно флаги использовать, иначе ты эти задачи не выполнишь. И чтобы ты эти задачи мог выполнять, тебя учат придумывать и использовать флаги. А чтобы ты научился, для тебя придумывают задачу, устроенную определённым образом. Поэтому ты эту задачу решить не можешь без флагов. Она сделана специально так, чтобы ты к флагам обратился и начал их придумывать и использовать.



Офлайн

#6 Июль 6, 2022 11:55:28

jaz-musik
Зарегистрирован: 2022-07-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

Всем привет! Скажите, кто-то здесь уже решал задачку 15? https://mipt-cs.github.io/python3-2017-2018/labs/lab2.html#o15-task-8-21
У меня получился такой код, но что-то идет не так….

Прикреплённый файлы:
attachment 2022-07-06_11-53-35.png (64,2 KБ)

Офлайн

#7 Июль 6, 2022 12:13:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

jaz-musik
Скажите, кто-то здесь уже решал задачку 15?
Здесь решал эту задачу.



Офлайн

#8 Июль 6, 2022 12:33:32

jaz-musik
Зарегистрирован: 2022-07-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

py.user.next
Спасибо большое! Я неправильно поняла задание

Офлайн

#9 Сен. 11, 2022 18:40:55

pokemon
Зарегистрирован: 2022-08-21
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

py.user.next
Здравствуйте можете объяснить логику ? решения. на 30 задаче (task_9_3)этой) застрял. не могу понять никак.. читаю ваш код но не могу понять(ход и действия кода) как это вы закрашиваете поле «треугольниками».
остальные задачи решил. они полегче больше на простую логику.. а не математическую )

Офлайн

#10 Сен. 11, 2022 18:41:10

pokemon
Зарегистрирован: 2022-08-21
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

py.user.next
Здравствуйте можете объяснить логику ? решения. на 30 задаче (task_9_3)этой) застрял. не могу понять никак.. читаю ваш код но не могу понять(ход и действия кода) как это вы закрашиваете поле «треугольниками».
остальные задачи решил. они полегче больше на простую логику.. а не математическую )

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version