помогите с решением задачи(Python)
Задача: https://acmp.ru/index.asp?main=task&id_task=385
import math
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __copy__(self):
point = Point(self.x, self.y)
return point
def distance(self, other):
r_x = (self.x - other.x) ** 2
r_y = (self.y - other.y) ** 2
dist = math.sqrt(r_x + r_y)
return dist
n = int(input())
a = []
for i in range(n):
x,y = [int(x) for x in input().split()]
point = Point(x,y)
k = math.sqrt ((x - x) ** 2 + (x - y) ** 2)
1 вопрос:
Не понимаю как сделать так, чтобы из введенных значение ы цикле, я мог подставить в формулу по расчету расстояния, так как при написание формулы получается из одного и того же значения идет вычитание, из из=за этого не выходит.
2 вопрос:
как посчитать сколько расстояний измерил Дима, тип может формула какая-то или еще что-то
Ответы (1 шт):
Автор решения: vp_arth
→ Ссылка
from itertools import permutations
from math import sqrt
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def sqr_dist(self, other):
"Квадрат расстояния - этого достаточно, чтобы отличать разные расстояния между точками"
return (self.x - other.x)**2 + (self.y - other.y)**2;
def __repr__(self):
return f'<Point {self.x}, {self.y}>'
n = int(input())
# Считываем все точки в массив
a = []
for i in range(n):
a.append(Point(*[int(x) for x in input().split()]))
# Найденные расстояния складываем в множество, дубликаты отбрасываются автоматически
unique_dists = set()
# Генерируем все комбинации пар точек
for (a, b) in permutations(a, 2):
# Считаем растояния между точками пары
unique_dists.add(a.sqr_dist(b))
dists = sorted([round(sqrt(sqr_dist), 9) for sqr_dist in unique_dists])
print(len(dists))
for dist in dists:
print(dist)