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 k
que 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 k
e 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!