Imaginez un tas de rectangles dessinés dans le plan, chaque rectangle avec ses sommets en coordonnées entières et ses côtés parallèles aux axes:
Les rectangles divisent l'avion en un certain nombre de régions disjointes, colorées en rouge et bleu ci-dessous:
Votre objectif est de trouver le nombre de ces régions qui sont des carrés parfaits. Dans l'exemple ci-dessus, il y en a trois:
Notez que le grand carré au milieu n'est pas compté car il ne s'agit pas d'une seule région, mais plutôt de plusieurs petites régions disjointes.
Contribution
Vous pouvez écrire une fonction ou un programme complet pour ce défi.
L'entrée sera 4n
des entiers non négatifs définissant des n
rectangles dans le plan. Chaque rectangle est représenté par deux sommets opposés, par exemple 4 9 7 8
représente le rectangle avec des sommets opposés (4, 9)
et (7, 8)
. Notez que ce rectangle peut également être représenté par 7 8 4 9
ou 4 8 7 9
.
Le format d'entrée exact est flexible (par exemple une chaîne séparée par des espaces, une chaîne séparée par des virgules, un seul tableau d'entiers, une liste de tuples de coordonnées, etc.), mais soyez raisonnable et donnez un exemple de la façon d'exécuter votre code dans votre message. Vous ne pouvez pas réorganiser l'entrée.
Pour simplifier, vous pouvez supposer qu'il n'y aura pas deux arêtes qui se chevaucheront - cela inclut le chevauchement au sommet. En particulier, cela implique qu'aucun deux rectangles ne toucheront bord à bord ou coin à coin, et que les rectangles auront une zone non nulle.
Sortie
Votre programme doit imprimer ou renvoyer un seul entier, qui est le nombre de régions carrées.
Notation
C'est le code golf, donc le code dans le moins d'octets gagne.
Cas de test
Contribution:
0 0 5 5
6 8 10 4
14 16 11 13
19 1 18 2
Sortie:
4
Il s'agit simplement de quatre carrés disjoints:
Contribution:
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
Sortie:
3
Ceci est l'exemple de cas de test au début de la publication.
Contribution:
0 9 15 12
6 3 18 15
9 6 12 20
13 4 17 8
Sortie:
7
Contribution:
5 9 11 10
5 12 11 13
6 8 7 14
9 8 10 14
13 8 14 9
13 10 14 14
Sortie:
14
Contribution:
0 99999 100000 0
Sortie:
0
Ce n'est qu'un grand rectangle.
Contribution:
0 99999 100000 0
2 1 142857 285714
Sortie:
1
Deux grands rectangles qui se chevauchent.