想象一下在平面上绘制的一堆矩形,每个矩形的顶点在整数坐标处,并且其边平行于轴:
矩形将平面划分为多个不相交的区域,下面用红色和蓝色表示:
您的目标是找到这样的正方形的区域数量。在上面的示例中,有三个:
注意,中间的大方块不是一个单一的区域,因此不算在内,而是由几个较小的不相交的区域组成。
输入项
您可以为此挑战编写函数或完整程序。
输入将是在平面中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
重叠的两个大矩形。