Уявіть купу прямокутників, намальованих у площині, кожен прямокутник з його вершинами за цілими координатами та його сторонами, паралельними осям:
Прямокутники розділяють площину на ряд ділянок, що перетинаються, кольором червоного та синього внизу:
Ваша мета - знайти кількість таких регіонів, які є ідеальними квадратами. У наведеному вище прикладі є три:
Зауважте, що велика площа в середині не зараховується, оскільки вона не є однією областю, а натомість складається з кількох менших непересічних областей.
Вхідні дані
Ви можете написати функцію або повну програму для цього завдання.
Вхідними будуть 4n
невід’ємні цілі числа, що визначають n
прямокутники в площині. Кожен прямокутник представлений двома протилежними вершинами, наприклад, 4 9 7 8
являє собою прямокутник з протилежними вершинами (4, 9)
і (7, 8)
. Зауважте, що цей прямокутник також може бути представлений як 7 8 4 9
або 4 8 7 9
.
Точний формат введення є гнучким (наприклад, розділений пробілом рядок, відокремлений комами рядок, одиночний масив цілих чисел, список кортежів координат тощо), але будь ласка, будьте розумні і наведіть приклад того, як запустити свій код у своїй публікації. Ви не можете змінити порядок введення.
Для простоти можна припустити, що жодне два ребра не буде перекриватися - це включає перекриття у вершині. Зокрема, це означає, що жоден два прямокутники не буде торкатися край-край або кут-кут, а прямокутники матимуть ненульову площу.
Вихідні дані
Ваша програма повинна надрукувати або повернути єдине ціле число, яке є кількістю квадратних областей.
Оцінка балів
Це код гольфу, тому виграє код у найменших байтах.
Тестові справи
Вхід:
0 0 5 5
6 8 10 4
14 16 11 13
19 1 18 2
Вихід:
4
Це просто чотири розрізнені квадрати:
Вхід:
2 1 3 11
1 10 5 19
6 10 11 3
8 8 15 15
13 13 9 5
15 1 19 7
17 19 19 17
Вихід:
3
Це приклад тестового випадку на початку публікації.
Вхід:
0 9 15 12
6 3 18 15
9 6 12 20
13 4 17 8
Вихід:
7
Вхід:
5 9 11 10
5 12 11 13
6 8 7 14
9 8 10 14
13 8 14 9
13 10 14 14
Вихід:
14
Вхід:
0 99999 100000 0
Вихід:
0
Це лише один великий прямокутник.
Вхід:
0 99999 100000 0
2 1 142857 285714
Вихід:
1
Два великих прямокутника, які перекриваються.