• Как узнать, входит ли игрок1 (x,y,z) в поле игрок2 (x,y,z)?

    @WitFed
    Программист
    Это что-то из олимпиадного ? Разовые сдвиги между "кадрами" не очень большие ? Резко прыгать никто не будет между соседними моментами времени ?
    Как видно из рисунка, зелёным помечены круги игроков, расстояние между которыми до 2R, где R -- радиус взаимодействия, одинаковый для всех.
    Расстояния будут попарно считаться как суммы квадратов разностей dx*dx + dy*dy.
    Можно для начала рассматривать для каждого игрока только товарищей, у которых дельты по осям обе не больше 4хR.
    Их тогда в среднем будет сильно меньше 1000.
    Были на 4хR, за "секунду" сблизились каждый на R, и уже "на связи" ! ;)
    Хранить и пересчитывать ближайших с надо запасом, чтобы при небольших сдвигах одного не сравнивать его расстояния со всеми остальными, а только если он сдвинется на R и более.
    Надо иметь массив А[1000,999] с парами {№ соседа, расстояние}, максимальным (вдруг они таки "столпятся" и захотят "пообщаться", и тогда пойдут тормоза, выбрать ближайших будет сильно дольше).
    Ещё массив Л[1000] с текущим количеством "соседей" для каждого А[i].
    И, конечно, позиции Х/У для всех О[1000], где был последний полный пересчёт А[i].
    В первый раз пересчитать все расстояния, каждому в А[i] писать только "недалёких", до 16хRхR.
    Потом -- сортировка всего А[i], и первые ближайшие до 4хRхR окажутся достойными для общения.
    После каждого сдвига игрока И[i] его список пересчитывается целиком, если дельта с О[i] больше RхR (и О[i] обновляется).
    В обратном случае -- просто пересчёт дистанций/сортировка внутри прежнего списка А[i] на длину Л[i].
    Новый список с дистанциями до 4хRхR надо сравнить со старым, и если кто-то там новый появился, то его пометить для перестройки позже.
    И кто "пропал с дистанции" -- тоже требует перестройки.
    Полной или не очень, просто добавить/удалить себя к нему -- надо ещё додумать.
    Инкрементальные действия между "степами" будут пропорциональны количеству немного шевельнувшихся между "степами" игроков И[i], и в основном на длину списков их "соседей", этого достаточно ?
    Ответ написан
    Комментировать
  • Есть в Windows API для задания тега Write Combining для моей области памяти?

    @WitFed Автор вопроса
    Программист
    Вопрос решит функция:
    PVOID MmMapIoSpace(
    [in] PHYSICAL_ADDRESS PhysicalAddress,
    [in] SIZE_T NumberOfBytes,
    [in] MEMORY_CACHING_TYPE CacheType
    );

    Там последний параметр может быть равен MmWriteCombined и ещё много чему..
    Ответ написан
    Комментировать
  • Как найти один и тот же объект на разных кадрах?

    @WitFed
    Программист
    Я бы ИИ сильно не применял, ему до настоящего разума далеко.
    Есть на погрузчике на крыше моргающая лампочка ?
    Её и надо ловить обоими/обеими камерами.
    Ответ написан
    Комментировать
  • Что за сайт с задачами по программированию (помню и привёл только одну задачу про ракету и расчёт топлива)?

    @WitFed
    Программист
    https://codeforces.com/problemset пробуй.
    А заявленная задача -- на стыке физики и математики.
    Ответ написан
    Комментировать
  • Как использовать структуры данных на практике?

    @WitFed
    Программист
    Да, у автора вопроса всё нечётко, совсем начинающий.
    Любые 2 и более данных рядом, обрабатываемых в совокупности по своей логической связи, -- уже структура, СД.
    Алгоритмы (А) -- это всё, что с ними происходит, цели обработки, основа и цель любого программирования.
    Если взять современный мессенджер или всемирный сайт с миллиардами пользователей и не хранить их данные оптимально, не обрабатывать мгновенно, то потребуются на порядки большие затраты на оборудование, поэтому программисты там требуются отборные.
    Мотивация для СД и А должна быть на вводных этапах оьучения.
    Ответ написан
    Комментировать