この課題では、2つの重複する長方形が与えられ、一方を他方から削除して作成された長方形を計算する必要があります。
たとえば、黒い長方形から赤い長方形を削除する場合:
次の2つの長方形セットのいずれかになります。
また、以下を処理する必要があります。
より明確にするには:
- AとBの2つの長方形の座標を入力します。
- Bを除くAのすべての領域をカバーする、重複しない最小の長方形を出力する必要があります。可能なカバーは許可されています
- 直交座標は4つの整数として渡されます。2つのペア(2つのコーナーポイントを表す)で、または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
これはcode-golfなので、コードをできるだけ短くしてください!
{(x1, y1), (x2, y2)}
が成り立つx1 < x2
と仮定できy1 < y2
ますか?