Задача 5F. Calculate distance

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Существует набор линий в двумерном пространстве. В этом же пространстве присутствует точка point. Необходимо найти кратчайшие расстояния до всех линий. Требуется реализовать на языке Python функцию, позволяющую находить расстояния от точки point до всех линий. Результатом выполнения этой функции должен быть массив расстояний. Работа должна быть выполнена с применением numpy для хранения и обработки всех данных.


import numpy as np

def calculate(start_points: np.ndarray, end_points: np.ndarray, point: np.ndarray) -> np.ndarray:
    '''Возвращает одномерный np.ndarray, содержащий расстояния до линий

    Args:
        start_points: двумерный np.ndarray, содержащий координаты первых точек линий
        end_points: двумерный np.ndarray, содержащий координаты вторых точек линий
        p: двумерный np.ndarray, содержайщий координаты точки point.
        
        start_points.shape == end_points.shape

    Returns:
        одномерный np.ndarray, содержащий расстояния от точки point до линий
    '''
    pass

Формат выходных данных

Код решения должен содержать только определение и реализацию функции. Он не должен ничего выводить. Функция должна возвращать значения, округленные с точностью до 4х знаков после запятой. В случаях нахождения округляемого значения ровно посередине, требуется округлить до ближайшего четного:

  1. 1.11115→ 1.1112
  2. 1.11105→ 1.1110
  3. 1.11107→ 1.1111
  4. 1.11103→ 1.1110

Примеры тестов

Стандартный вход Стандартный выход
1
print(*calculate(
        np.array([[1,  2.5]]),
        np.array([[3,  2.5]]),
        np.array([[2, 1]])))
1.5
2
print(*calculate(
        np.array([[1, 2.5], [3.5, 3], [3.5, 4]]),
        np.array([[3, 2.5], [3.5, 0.5], [2.5, 5]]),
        np.array([[2.5, 4]])))
1.5 1. 0.7071

0.091s 0.016s 13