Нахождение ближайшего массива - PullRequest
0 голосов
/ 08 июня 2018

Я хотел знать, какой возможный алгоритм я мог бы использовать, чтобы найти, какой в ​​наборе массивов ниже ближайший к [0,0,0] .Я думаю о том, чтобы дать очки каждому набору, добавив значения каждого набора, но проблема в том, что индекс массива 1 [0,2,1] будет иметь сумму 3 который равен индексу массива 3. Ответ ниже должен быть индексом 3, или у вас есть лучшее предложение?заранее спасибо.

$sets = [
    [4,5,6], // 0
    [0,2,1], // 1
    [1,3,0], // 2
    [1,1,1], // 3
    [0,1,3], // 4
    [5,4,3], // 5
]

1 Ответ

0 голосов
/ 08 июня 2018

Ну, то, что вы в основном описываете, соответствует нахождению расстояния до начала координат для точки в трехмерном пространстве, формула для которой:

formula

Исходя из этого, точка [1, 1, 1] действительно ближе к началу координат, чем [0, 2, 1]:

formula-1

formula-2

В PHP вы можете рассчитать расстояния следующим образом:

$sets = [[4,5,6], [0,2,1], [1,3,0], [1,1,1], [0,1,3], [5,4,3]];

$distances = array_map(function ($i) {
    return sqrt($i[0]**2 + $i[1]**2 + $i[2]**2);
}, $sets);

print_r($distances);

Нахождение ближайшей точки становится тривиальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...