Inclusion-Exclusion vous permet de calculer les tailles de certaines unions et intersections entre les ensembles en connaissant certaines des autres valeurs. Je ne l'expliquerai pas exactement, mais votre défi est de visualiser l'inclusion-exclusion sur un diagramme de Venn.
Parce que je suis sympa, vous utiliserez des rectangles, pas des cercles.
Vous recevrez une liste de rectangles indiqués par des coordonnées de coin en haut à gauche et en bas à droite dans n'importe quel format raisonnable (liste de 4 tuples, liste de paires de paires, liste de paires, etc.). Vous pouvez supposer que toutes les coordonnées ne sont pas négatives et se situent dans la plage de nombres (raisonnable) de votre langue (veuillez préciser de quoi il s'agit si elle est inférieure à 128). Vous pouvez choisir d'être inclusif à gauche ou exclusif à gauche et inclusif à droite ou exclusif à droite. Quel que soit le format choisi, vous pouvez supposer que tous les rectangles sont au moins 1x1.
Ensuite, vous devez dessiner chaque rectangle sur l'écran (canevas ASCII) en utilisant un seul caractère non blanc k, à vous de choisir.
Cependant, chaque fois que deux rectangles se chevauchent, la zone de chevauchement doit être dessinée avec un autre caractère non blanc l != k, également à vous de choisir.
Chaque fois que trois rectangles se chevauchent, la zone de chevauchement doit être établi avec k, et pour un nombre impair de rectangles de couverture, ket un nombre pair l.
L'arrière-plan doit être composé d'espaces simples ( 0x20).
Cas de test ( k = "#", l = ".")
0 0 9 9
1 1 10 10
2 2 11 11
#########
#........#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#........#
#########
1 1 3 3
2 2 4 4
##
#.#
##
1 1 9 9
2 2 8 8
3 3 7 7
########
#......#
#.####.#
#.####.#
#.####.#
#.####.#
#......#
########
Remarques
- Les espaces de début et les nouvelles lignes (qui se produisent si la coordonnée minimale n'est pas
0, 0) doivent être présents - Tous les espaces de fin et les sauts de ligne sont autorisés dans une mesure raisonnable (c'est-à-dire ne traînent pas comme 100000000 sauts de ligne, c'est juste ennuyeux)
- Les axes x et y peuvent être orientés dans les deux sens, mais vous devez être cohérent et spécifier lequel (la valeur par défaut est x droite et y bas)
- les coordonnées peuvent être indexées de 0, 1 ou 2.
Implémentation de Proton de référence
C'est du code-golf , donc l'objectif est d'avoir le code le plus court. Bon golf!