Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 7, 2023 09:04:52

Vangeli
Зарегистрирован: 2023-04-05
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

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


Спасибо за обратную связь, я сделал счётчиками действительно потому, что не нашёл другого удобного способа

но хотелось бы пояснить свой тезисы, ты пишешь:

py.user.next
Оно здесь есть, только ты его не видишь,

но тем ни менее твой код заканчивается так:

шагнуть вправо
шагнуть вниз
конец цикла

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

Но, ты безусловно прав о формах и методах обучения. Но я ведь прихожу к подобному решению только потому что не вижу другого, и снова, как ты правильно заметил, из-за отсутствия опыта. Но тем ни менее, все эти хитрые сложные алгоритмы - не из головы, а результате чтения книжек М. Лутца

Офлайн

#2 Апрель 7, 2023 22:50:20

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

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

Vangeli
но тем ни менее твой код заканчивается так:
шагнуть вправо
шагнуть вниз
конец цикла
Ну, там ещё один выход и цикла есть.

Здесь делал эту задачу.

Вот этот фрагмент
цикл выполнять
шагнуть вниз
если снизу_нет_стены то
шагнуть вверх
иначе
шагнуть вверх
выход из цикла
конец если
Он как раз и определяет, нужно ли остановиться.

  
>>> from pyrob.api import *
>>> 
>>> 
>>> @task(delay=0.05)
... def task_4_3():
...     move_right()
...     while True:
...         move_down()
...         if not wall_is_beneath():
...             move_up()
...         else:
...             move_up()
...             break
...         while not wall_is_on_the_right():
...             fill_cell()
...             move_right()
...         while not wall_is_on_the_left():
...             move_left()
...         move_right()
...         move_down()
...     
... 
>>> if __name__ == '__main__':
...     run_tasks()
... 
INFO:pyrob:Starting task task_4_3
INFO:pyrob:Task task_4_3 finished: +
INFO:pyrob:Total: 1/1
True
>>>

Vangeli
И когда я писал, что не смог найти закономерность для масштабирования, то это было только о том, что не смог в изначальный скрипт, ровно как и в твоём коде, заложить точку выхода. У нас обоих так или иначе делается дополнительное действие после основного алгоритма
А с чего ты взял-то, что там должна быть точка выхода? Там же человек придумывал эту задачу, и он её специально придумал так, чтобы точкой выхода были два последних ряда незакрашенных во всём поле. Дело в том, что клетки, которые нужно закрасить, никак не определяются исполнителем, такой операции у него нет “проверь, является ли клетка необходимой для закрашивания”. Он может только проверить ещё не закрашенную клетку и уже закрашенную клетку. Поэтому никакого другого способа, кроме как по наличию стены, определить конец закрашивания невозможно. Подумай сам: как ты без участия нижней стены определишь там конец закрашенного блока? Никак.



Отредактировано py.user.next (Апрель 7, 2023 23:13:27)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version