Дан куб из 64x64x64 элементов.
У каждого элемента есть координаты x y z от 0,0,0 до 63,63,63 соответственно.
Как за разумное время (~10 минут) найти для каждого элемента 26 соседей (окружающие элементы).
- перебор не подходит - очень долго.
Примечание:
проблема в скорости срабатывания алгоритма. "Тупо перебор" не подходит по скорости.
Примечание:
Напишите алгоритм как вы это собираетесь сделать за пару секунд.
P.S. вы заблуждаетесь насчет скорости ;)
Примечание:
//куб разбит на 512 кластеров (8*8*8) по 512 блоков (8*8*8)
function CalculateNeighbours() //находим соседей
{
for (var clust in structArray) //для каждого кластера
{
for (var block in clust.blockArray) //для каждого блока в кластере
{
//перебираем все блоки
for (var n_clust in structArray)
{
for (var n_block in n_clust.blockArray)
{
//вычисляем одного соседа
if ((n_block.world_x == (block.world_x))&&
(n_block.world_y == (block.world_y - 1))&&
(n_block.world_z == (block.world_z))) block.f = n_block; //записываем соседа
}
}
}
}
}
Примечание:
Rentier, спасибо большое! Выглядит заманчиво, пошел пробовать.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.