Вы можете использовать itertools.combinations
, чтобы сгенерировать список всех комбинаций двух точек в файле, отфильтровать те, которые имеют одинаковые координаты x
или y
, так как они не образуют прямоугольники, а затем использовать min
с ключевой функцией, которая возвращает площадь прямоугольника, образованного данной парой точек, чтобы найти наименьший прямоугольник, который может быть сформирован точками в списке:
from itertools import combinations
with open('points.txt') as f:
print(min([((x1, y1), (x2, y2)) for (x1, y1), (x2, y2) in combinations([tuple(map(int, l.split())) for l in f], 2) if x1 != x2 and y1 != y2], key=lambda p: abs((p[1][0] - p[0][0]) * (p[1][1] - p[0][1]))))
Учитывая ваш пример ввода, это выводит:
((3, -1), (2, -2))