Imagine um monte de retângulos desenhados no plano, cada retângulo com seus vértices em coordenadas inteiras e seus lados paralelos aos eixos:
Os retângulos dividem o avião em várias regiões separadas, coloridas em vermelho e azul abaixo:
Seu objetivo é encontrar o número dessas regiões que são quadrados perfeitos. No exemplo acima, existem três:
Observe que o grande quadrado no meio não é contado, pois não é uma região única, mas é composto de várias regiões disjuntas menores.
Entrada
Você pode escrever uma função ou um programa completo para esse desafio.
A entrada será 4n
números inteiros não negativos que definem n
retângulos no plano. Cada retângulo é representado por dois vértices opostos, por exemplo, 4 9 7 8
representa o retângulo com vértices opostos (4, 9)
e (7, 8)
. Observe que esse retângulo também pode ser representado como 7 8 4 9
ou 4 8 7 9
.
O formato exato de entrada é flexível (por exemplo, sequência separada por espaço, sequência separada por vírgula, matriz única de números inteiros, lista de tuplas de coordenadas etc.), mas seja razoável e dê um exemplo de como executar seu código em sua postagem. Você não pode reordenar a entrada.
Para simplificar, você pode assumir que não há duas arestas sobrepostas - isso inclui a sobreposição em um vértice. Em particular, isso implica que dois retângulos tocarão de ponta a ponta ou canto a canto, e os retângulos terão área diferente de zero.
Saída
Seu programa deve imprimir ou retornar um único número inteiro, que é o número de regiões quadradas.
Pontuação
Este é o código golf, portanto o código com o menor número de bytes vence.
Casos de teste
Entrada:
0 0 5 5
6 8 10 4
14 16 11 13
19 1 18 2
Saída:
4
São simplesmente quatro quadrados disjuntos:
Entrada:
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
Saída:
3
Este é o caso de teste de exemplo no início da postagem.
Entrada:
0 9 15 12
6 3 18 15
9 6 12 20
13 4 17 8
Saída:
7
Entrada:
5 9 11 10
5 12 11 13
6 8 7 14
9 8 10 14
13 8 14 9
13 10 14 14
Saída:
14
Entrada:
0 99999 100000 0
Saída:
0
Este é apenas um grande retângulo.
Entrada:
0 99999 100000 0
2 1 142857 285714
Saída:
1
Dois retângulos grandes que se sobrepõem.