fork download
  1. from itertools import combinations
  2.  
  3. def max_area_rectangle(points):
  4. n = len(points)
  5. max_area = 0
  6. max_rectangle = None
  7.  
  8. for p1, p2, p3, p4 in combinations(points, 4):
  9. x_values = {p1[0], p2[0], p3[0], p4[0]}
  10. y_values = {p1[1], p2[1], p3[1], p4[1]}
  11. if len(x_values) == 2 and len(y_values) == 2:
  12. x1, x2 = sorted(x_values)
  13. y1, y2 = sorted(y_values)
  14. area = (x2 - x1) * (y2 - y1)
  15. if area > max_area:
  16. max_area = area
  17. max_rectangle = (p1, p2, p3, p4)
  18.  
  19. return max_area, max_rectangle
  20.  
  21. points = [(1, 1), (2, 3), (4, 4), (5, 2), (1, 4), (4, 1)]
  22. print(max_area_rectangle(points))
  23.  
Success #stdin #stdout 0.02s 7316KB
stdin
points = [(1, 1), (2, 3), (4, 4), (5, 2), (1, 4), (4, 1)]
stdout
(9, ((1, 1), (4, 4), (1, 4), (4, 1)))