• Как найти длинный путь между двумя точками?

    maaGames
    @maaGames
    Погроммирую программы
    Самый длинный путь - эта задача нерешаема, т.к. в самом начале игры змейка будет просто кругами бегать ВЕЧНО, ведь нет запрета на посещение одной и той же клетки.
    Но вы решаете совсем другую задачу.
    У вас задача съесть точку и удлинить змею, но не уткнуться в себя самого.
    Для этого задаёте список правил, которые, с большой долей вероятности, позволят эту точку избегать:
    2. двигаться вдоль границ игрового поля
    1. двигаться вдоль тела змейки
    3. ВАЖНО! не создавать петли. т.е. приближаясь к хвосту/стенке нежелательно оставлять незаполненные области
    4. избегать движения к точке
    5... ещё что-нибудь, что сразу в голову не приходит
    X. делать пункты 1-4 на несколько ходов вперёд. Допустим, на 50 щагов вперёд можно без проблем просчитываь. Если на 47 шаге скушали точку, при этом оставались пустые клетки, то отматываете назад и пробуете двигаться в другие стороны.
    Ответ написан
    Комментировать
  • Как найти длинный путь между двумя точками?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Зачем вам самый длинный путь? Вообще, эта задача очень сложная. Кратчайший путь можно найти обходом в щирину или глубину, быстро и просто. Самый длинный - только полным перебором. Возможно, его можно как-то соптимизировать используя особенности вашей конкретной задачи (вроде заполнения прямоугольника змейкой и конструтирование маршрута из таких шаблонов), но это тоже очень сложно.
    Ответ написан
    4 комментария
  • Как найти длинный путь между двумя точками?

    @NIKROTOS
    Начинающий программист.
    Просто поворачивай дважды в крайних положениях и дойдёшь до конца(разворот на 180 на краю)
    Ответ написан
    Комментировать
  • Как найти длинный путь между двумя точками?

    LaRN
    @LaRN
    Senior Developer
    В конкретно в этой задаче кажется, что самое длинное расстояние, это количество ячеек игрового поля в области, которая содержит красную точку. Т.е. это можно попробовать решить каким либо алгоритмом заливки области цветом.
    Ответ написан
    Комментировать
  • Как ускорить циклы while?

    Driver86
    @Driver86
    Немодератор toster.ru
    Сохранять состояния пикселей и отслеживать только изменения
    Ответ написан
    1 комментарий
  • Как ускорить циклы while?

    Не используйте мультипроцессинг или мультипоточность. Пока, по крайней мере.
    Разбирайтесь с алгоритмами - например проходить попиксельно всю игровую область - это всегда будет медленно.
    Найдите и почитайте какую нибудь книжку по разработке игр, там наверняка будет что нибудь на тему оптимизации.
    Ответ написан
    1 комментарий
  • Как сделать что б while работал пока может?

    @artempawww
    Зацикливаться до бесконечности он может только при True
    while True: 
        code()


    Если он у Вас зацикливается в других случаях, то это уже проблема кода.

    Полагаю Вы написали что-то типа
    while a<20:
        code()

    В конце, вы должны обязательно добавить a += 1, иначе цикл и правда уйдет в бесконечность.

    Или же, если вы делаете что-то типа
    while functionThatReturnsTrue():
        code()


    То, если функция всегда будет возвращать True, то цикл тоже уйдет в бесконечность
    Ответ написан
    Комментировать
  • Как искать все доступные пиксели?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Берёшь точку выше головы проверяешь, доступна ли точка для прохода и проверяли ли мы её уже. Если доступна и не проверяли, то добавляем её в список доступных и в список для проверки. И так ещё в лево, право, низ. Затем забираем очередную точку из списка для проверки, пока они там не закончатся.
    Ответ написан
    4 комментария
  • Как искать все доступные пиксели?

    @Razumov_Timur_from_KZN
    Стоит разделить логику игры и отрисовку
    Например, всю информацию по пикселям хранить в данном случае в двумерном массиве, в котором будут элементы самой змейки и всего остального.
    Всю логику прописываешь в слое Логики, отрисовку каждый кадр после выполнения слоя логики
    Ответ написан
    1 комментарий
  • Как сделать что б while работал пока может?

    Vindicar
    @Vindicar
    Выяснить, почему он зацикливается, и исправить.
    Обходные варианты существуют, но они привносят куда больше проблем, чем решают.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы бот отвечал на команду start?

    Vindicar
    @Vindicar
    Что за @bot.send_message? Здесь декоратору не место, тут нужен просто вызов функции.
    Ответ написан
    7 комментариев
  • Как сделать что бы скрипт когда сделал определенную задачу останавливался на 10 секунд?

    @Samogon4ik
    Вроде бы человек
    Если вам нужно заморозить весь код, то используйте:
    import time
    
    time.sleep(10)
    #код действий после ожидания 10 секунд


    Но если у вас асинхронная функция или нужно чтоб код не останавливался, тогда используйте:
    import asyncio
    
    async def func_name():
        await asyncio.sleep(10)
        #код действий после ожидания 10 секунд
    Ответ написан
    Комментировать
  • Как ускорить циклы while?

    DedIsDead
    @DedIsDead
    Используй мульти процессинг или мульти поточность:
    Мульти процессинг
    Мульти поточность
    Ответ написан
    Комментировать