平面に描かれた長方形の束を想像してください。各長方形の頂点は整数座標にあり、辺は軸に平行です。
長方形は、平面をいくつかのばらばらの領域に分割します。これらの領域は、下の赤と青の色です。
あなたの目標は、そのような完全な正方形の領域の数を見つけることです。上記の例では、次の3つがあります。
中央の大きな正方形は、単一の領域ではないため数えられず、代わりにいくつかの小さなばらばらの領域で構成されていることに注意してください。
入力
このチャレンジのために関数または完全なプログラムを書くことができます。
入力は、平面内の長方形を4n
定義する非負の整数になりますn
。各長方形は、2つの対向する頂点で表されます。たとえば4 9 7 8
、対向する頂点(4, 9)
とで長方形を表し(7, 8)
ます。この長方形は7 8 4 9
またはとしても表されることに注意してください4 8 7 9
。
正確な入力形式は、(例えば、スペースで区切られた文字列、カンマ区切りの文字列、整数の単一のアレイ、座標タプルのリストなど)柔軟ですが、してください合理的であるとあなたのポストにあなたのコードを実行する方法の例を与えます。入力を並べ替えることはできません。
簡単にするために、2つのエッジがオーバーラップしないことを想定できます。これには、頂点でのオーバーラップが含まれます。特に、これは、2つの長方形が端から端または角から角に触れず、長方形の面積がゼロでないことを意味します。
出力
プログラムは、単一の整数(正方形の領域の数)を出力または返す必要があります。
得点
これはコードゴルフであるため、最も少ないバイト数のコードが優先されます。
テストケース
入力:
0 0 5 5
6 8 10 4
14 16 11 13
19 1 18 2
出力:
4
これは、単純に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
これは1つの大きな長方形です。
入力:
0 99999 100000 0
2 1 142857 285714
出力:
1
重なり合う2つの大きな長方形。