Dans ce défi, vous obtenez deux rectangles qui se chevauchent et vous devez calculer les rectangles créés en supprimant l'un de l'autre.
Par exemple, si vous supprimez le rectangle rouge du noir:
Vous vous retrouvez avec l'un des deux ensembles de rectangle suivants:
Vous devrez également gérer les éléments suivants:
Pour être plus explicite:
- Vous entrerez les coordonnées de deux rectangles, A et B.
- Vous devez sortir le moins de rectangles non superposés qui couvrent toute la zone de A sans B. Tout recouvrement possible est autorisé
- Les coordonnées rectangulaires sont transmises sous forme de 4 entiers. Vous pouvez les passer en deux paires (représentant les deux points d'angle), ou en tant que tuple / liste de 4 entiers. Vos entrées et sorties doivent être cohérentes.
- A et B ne se chevaucheront pas ou ne se toucheront pas nécessairement, et chacun aura une zone d'au moins 1
Cas de test:
[(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
C'est un code-golf , alors faites votre code le plus court possible!
{(x1, y1), (x2, y2)}
vraie x1 < x2
et y1 < y2
?