У цьому виклику вам надаються два прямокутники, що перекриваються, і вам потрібно обчислити прямокутники, створені, видаляючи один з іншого.
Наприклад, якщо ви вилучите червоний прямокутник із чорного:
Ви закінчите один із наступних двох наборів прямокутників:
Вам також потрібно буде обробити таке:
Щоб бути більш чітким:
- Ви введете координати двох прямокутників, 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
?