Inclusão-Exclusão permite calcular os tamanhos de algumas uniões e interseções entre conjuntos, conhecendo alguns dos outros valores. Não vou explicar exatamente, mas seu desafio é visualizar a inclusão-exclusão em um diagrama de Venn.
Porque eu sou legal, você estará usando retângulos, não círculos.
Você receberá uma lista de retângulos indicados pelas coordenadas do canto superior esquerdo e inferior direito em qualquer formato razoável (lista de 4 tuplas, lista de pares de pares, lista de pares, etc.). Você pode assumir que todas as coordenadas são não-negativas e estão dentro do intervalo de números (razoável) do seu idioma (especifique o que é se for menor que 128). Você pode optar por ser inclusivo à esquerda ou exclusivo à esquerda e inclusivo à direita ou exclusivo à direita. Independentemente do formato escolhido, você pode assumir que todos os retângulos são pelo menos 1x1.
Em seguida, você deve desenhar cada retângulo na tela (tela ASCII) usando um único caractere kque não seja um espaço em branco , que você poderá escolher.
No entanto, sempre que dois retângulos se sobrepõem, a área sobreposta deve ser desenhada com outro caractere que não seja um espaço em branco l != k, também seu para você escolher.
Sempre que três retângulos se sobrepõem, a área sobreposta deve ser desenhada com ke para um número ímpar de retângulos que cobrem k, e um número par l.
O plano de fundo deve ser um espaço em branco único ( 0x20).
Casos de teste ( 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
########
#......#
#.####.#
#.####.#
#.####.#
#.####.#
#......#
########
Notas
- Espaços iniciais e novas linhas (que ocorrem se a coordenada mínima não estiver
0, 0) devem estar presentes - Quaisquer espaços à direita e novas linhas são permitidos em uma extensão razoável (ou seja, não rastreie como 100000000 novas linhas, isso é apenas irritante)
- os eixos xe y podem ficar virados para os dois lados, mas você deve ser consistente e especificar quais (o padrão é x-right e y-down)
- as coordenadas podem ser indexadas em 0, 1 ou 2.
Implementação de referência de prótons
Isso é código-golfe , então o objetivo é ter o código mais curto. Feliz golfe!