Представьте себе группу прямоугольников, нарисованных на плоскости, каждый прямоугольник с вершинами в целочисленных координатах и сторонами, параллельными осям:
Прямоугольники разбивают плоскость на несколько непересекающихся областей, выделенных красным и синим цветом ниже:
Ваша цель - найти количество таких областей, которые являются идеальными квадратами. В приведенном выше примере их три:
Обратите внимание, что большой квадрат в середине не считается, поскольку он не является отдельной областью, а вместо этого состоит из нескольких меньших непересекающихся областей.
вход
Вы можете написать функцию или полную программу для этой задачи.
Входные данные будут 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
Два больших прямоугольника, которые перекрываются.