Python
Решить задачу питон
Даны множества A и B, состоящие соответственно из N1 и N2 точек (точки заданы своими координатами x, y). Найти минимальное расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии (вначале выводится точка из множества A, затем точка из множества B).
Без ввода с консоли, точки задаются внутри программы:
Формируется произведение множеств (пары из каждой точки из A с каждой из B) с расстоянием между ними, затем находим минимум по квадрату расстояния (это где lambda t: t[2]). Из минимального расстояния извлекаем корень и печатаем его вместе с точками в указанном порядке.
from math import sqrt
A = [[-1, 5], [6, 8], [1, 37]]
B = [[3, 0], [9, -1], [5, 11]]
def distSquare(a, b):
dx = a[0] - b[0]
dy = a[1] - b[1]
return dx * dx + dy * dy
ds = [(i, j, distSquare(A[i], B[j])) for i in range(len(A)) for j in range(len(B))]
md = min(ds, key = lambda t: t[2])
print(sqrt(md[2]), A[md[0]], B[md[1]])
Формируется произведение множеств (пары из каждой точки из A с каждой из B) с расстоянием между ними, затем находим минимум по квадрату расстояния (это где lambda t: t[2]). Из минимального расстояния извлекаем корень и печатаем его вместе с точками в указанном порядке.
Надо взять все возможные комбинации точек множеств А и В, рассчитать между ними расстояние по теореме Пифагора и выбрать минимальное
from itertools import product
A = [(-1, 5), (6, 8), (1, 37)]
B = [(3, 0), (9, -1), (5, 11), (0, 3)]
all_combinations = product(A,B)
def calc_length(t):
return ((t[0][0]-t[1][0])**2+(t[0][1]-t[1][1])**2)**0.5
min_distanse = 99999999
p = ''
for points in all_combinations:
length = calc_length(points)
if length < min_distanse:
min_distanse = length
p = points
print(min_distanse, *p)
Стоит отметить, что если будет два одинаковых минимальных расстояния, то в ответ попадёт первое встреченное.Похожие вопросы
- Помогите решить задачу на питоне. пожалуйста.
- Помогите мне пожалуйста решить задачу на питоне!
- Помогите решить задачу на питон!!
- Помогите решить задачу в питоне, пожалуйста.
- Задача питон. Помогите решить,пожалуйста
- Питон. Нужно помочь решить задачу с циклом for
- Снова не могу решить задачу по питону.
- Помогите решить задачу на Питоне
- Помогите пожалуйста решить задачу на питоне...
- Помогите пожалуйста решить задачи на питоне: