У меня проблема с поиском N позиций в сетке на основе центральной точки и максимального диапазона.
У меня есть эта сетка, каждая координата в сетке может быть как закрытой, так и открытой, я привязываюсь, используя открытую координату, найти все открытые координаты вокруг первой, которые действительны, и диапазон ходьбы между ними равен или меньше, чем максимальная дальность ходьбы.
Сначала я попробовал решение с использованием A*, где я выбирал каждую координату в диапазоне, проверял, верны ли они, если бы они были, я бы вызывал A* от них до центральной позиции и подсчитывал количество шагов, если они были выше чем мой максимальный диапазон, я бы просто удалил координату из своего списка. Конечно, это действительно медленно для диапазонов выше 3 или сеток с большим количеством координат. Затем я попробовал рекурсивно искать координаты, начиная с центральной, расширяя и рекурсивно проверяя правильность координат. Это решение оказалось наиболее эффективным, за исключением того, что в моем коде каждый вызов функции перепроверял уже проверенные координаты и возвращал повторяющиеся значения. Я думал, что могу просто разделить «проверенный» список между вызовами функций, но это просто сломало мой код, поскольку вызов проверял координату и закрывал ее, даже если у него все еще были дочерние узлы, но технически они не находились в диапазоне их центра ( но были в пределах досягаемости первого центра) это закроет их и даст какие-то странные результаты.
Наконец, мой вопрос: как мне это сделать? Мой подход неверен? Есть ли лучший способ сделать это?
Спасибо.