Wyobraź sobie kilka prostokątów narysowanych w płaszczyźnie, każdy prostokąt z wierzchołkami o współrzędnych całkowitych i bokami równoległymi do osi:
Prostokąty dzielą płaszczyznę na kilka rozłącznych regionów, które mają kolor czerwony i niebieski poniżej:
Twoim celem jest znalezienie liczby takich regionów, które są idealnymi kwadratami. W powyższym przykładzie są trzy:
Zauważ, że duży kwadrat pośrodku nie jest liczony, ponieważ nie jest to pojedynczy region, ale składa się z kilku mniejszych, niepowiązanych regionów.
Wkład
Możesz napisać funkcję lub pełny program dla tego wyzwania.
Dane wejściowe będą 4n
nieujemnymi liczbami całkowitymi definiującymi n
prostokąty w płaszczyźnie. Każdy prostokąt jest reprezentowany przez dwa przeciwstawne wierzchołki, np. 4 9 7 8
Reprezentuje prostokąt z przeciwległymi wierzchołkami (4, 9)
i (7, 8)
. Zauważ, że ten prostokąt można również przedstawić jako 7 8 4 9
lub 4 8 7 9
.
Dokładny format wejściowy jest elastyczny (np. Ciąg oddzielony spacją, ciąg oddzielony przecinkami, pojedyncza tablica liczb całkowitych, lista krotek współrzędnych itd.), Ale bądź rozsądny i podaj przykład, jak uruchomić kod w poście. Nie możesz zmienić kolejności danych wejściowych.
Dla uproszczenia można założyć, że żadne dwie krawędzie nie będą się pokrywać - dotyczy to także nakładania się na wierzchołek. W szczególności oznacza to, że żadne dwa prostokąty nie będą się stykać od krawędzi do krawędzi lub od narożnika do narożnika, a prostokąty będą miały niezerowe pole.
Wydajność
Twój program powinien wydrukować lub zwrócić pojedynczą liczbę całkowitą, czyli liczbę kwadratowych regionów.
Punktacja
To jest kod golfowy, więc kod w najmniejszej liczbie bajtów wygrywa.
Przypadki testowe
Wkład:
0 0 5 5
6 8 10 4
14 16 11 13
19 1 18 2
Wydajność:
4
To po prostu cztery rozłączne kwadraty:
Wkład:
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
Wydajność:
3
To jest przykładowy przypadek testowy na początku postu.
Wkład:
0 9 15 12
6 3 18 15
9 6 12 20
13 4 17 8
Wydajność:
7
Wkład:
5 9 11 10
5 12 11 13
6 8 7 14
9 8 10 14
13 8 14 9
13 10 14 14
Wydajność:
14
Wkład:
0 99999 100000 0
Wydajność:
0
To tylko jeden duży prostokąt.
Wkład:
0 99999 100000 0
2 1 142857 285714
Wydajność:
1
Dwa duże prostokąty, które zachodzą na siebie.