在此挑战中,您将获得两个重叠的矩形,并且需要计算通过从另一个中删除一个而创建的矩形。
例如,如果您从黑色矩形中删除红色矩形:
您最终得到以下两个矩形集之一:
您还需要处理以下内容:
更明确地说:
- 您将输入两个矩形A和B的坐标。
- 您需要输出覆盖A的所有区域而没有B的最少的非重叠矩形。允许任何可能的覆盖
- 直角坐标作为4个整数传递。您可以将它们传递为两对(代表两个角点),也可以作为4个整数的元组/列表传递。您的输入和输出必须保持一致。
- A和B不一定会重叠或接触,并且各自的面积至少为1
测试用例:
[(0 0) (5 5)] [(3 4) (8 7)] -> [(0 0) (5 4)] [(0 4) (3 5)] # or [(0 0) (3 5)] [(3 0) (5 4)]
[(2 4) (10 11)] [(5 5) (6 6)] -> [(2 4) (10 5)] [(2 5) (5 6)] [(6 5) (10 6)] [(2 6) (10 11)] #Other sets of 4 rectangles are possible
[(3 3) (8 8)] [(0 1) (10 8)] -> #No rectangles should be output
[(0 0) (5 5)] [(1 1) (10 2)] -> [(0 0) (1 5)] [(1 0) (2 1)] [(2 0) (5 5)] #Other sets of 3 rectangles are possible
[(1 5) (7 8)] [(0 0) (1 10)] -> [(1 5) (7 8)] #Only possible output
[(4 1) (10 9)] [(2 5) (20 7)] -> [(4 1) (10 5)] [(4 7) (10 9)] #Only possible output
[(1 1) (8 8)] [(0 6) (9 9)] -> [(1 1) (8 6)] #Only possible output
这是一个代码问题,所以请使代码尽可能短!
{(x1, y1), (x2, y2)}
持有x1 < x2
和y1 < y2
?