Как определить ближайшую точку из массива с координатами (X,Y) к главной точке (X,Y)?

  1. Необходимо написать функцию generate_random_coordinates(N), которая генерирует кортеж случайных координат (матрицу) длинной N. Координата X в диапазоне от -180 до +180, координата Y от -90 до +90.

  2. Написать функцию find_nearest(coordinate, matrix), которая находит ближайшую координату из сгенерированного массива к указанной координате.

Ответ к первому:

from random import randint
c = []
def generate_random_coordinates(N):
    for i in range(N):
        c.append([randint(-180, +180),randint(-90, +90)])
    print(c)

z = generate_random_coordinates(7)
print(z)

Ответы (1 шт):

Автор решения: MaxU
def generate_random_coordinates(N):
    return [[randint(-180, +180),randint(-90, +90)] for i in range(N)]

main_point = generate_random_coordinates(1)[0]
coords = generate_random_coordinates(10)

def dist(p1, p2=main_point):
    return ((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2) ** 0.5

res = min(coords, key=dist)

результат:

In [105]: coords
Out[105]:
[[-100, 25],
 [-160, -20],
 [-109, -12],
 [158, 79],
 [6, 2],
 [46, -56],
 [75, -81],
 [-109, -71],
 [-75, 40],
 [-177, 57]]

In [106]: main_point
Out[106]: [25, -54]

In [107]: res
Out[107]: [46, -56]
→ Ссылка