Форум сайта python.su
Спасибо за обратную связь, я сделал счётчиками действительно потому, что не нашёл другого удобного способа
но хотелось бы пояснить свой тезисы, ты пишешь:
py.user.next
Оно здесь есть, только ты его не видишь,
шагнуть вправо
шагнуть вниз
конец цикла
Офлайн
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)
Офлайн