Inclusion-Exclusion consente di calcolare le dimensioni di alcuni sindacati e intersezioni tra insiemi conoscendo alcuni degli altri valori. Non lo spiegherò esattamente, ma la tua sfida è quella di visualizzare l'inclusione-esclusione su un diagramma di Venn.
Perché sono gentile, userete rettangoli, non cerchi.
Ti verrà dato un elenco di rettangoli indicati dalle coordinate degli angoli in alto a sinistra e in basso a destra in qualsiasi formato ragionevole (elenco di 4 tuple, elenco di coppie di coppie, elenco di coppie, ecc.). Puoi presumere che tutte le coordinate non siano negative e rientrino nell'intervallo di numeri (ragionevole) della tua lingua (specifica di cosa si tratta se è inferiore a 128). Puoi scegliere di essere inclusivo di sinistra o esclusivo di sinistra e inclusivo di destra o esclusivo di destra. Indipendentemente dal formato scelto, puoi presumere che tutti i rettangoli siano almeno 1x1.
Quindi, devi disegnare ogni rettangolo sullo schermo (tela ASCII) usando un singolo carattere non bianco k, a tua scelta.
Tuttavia, ogni volta che due rettangoli si sovrappongono, l'area di sovrapposizione deve essere disegnata con un altro carattere non bianco l != k, anche il tuo da scegliere.
Ogni volta tre rettangoli sovrappongono, l'area di sovrapposizione dovrebbe essere disegnata k, e per un numero dispari di rettangoli copertura, ke un numero pari, l.
Lo sfondo dovrebbe essere single whitespace ( 0x20).
Casi di prova ( 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
########
#......#
#.####.#
#.####.#
#.####.#
#.####.#
#......#
########
Appunti
- Spazi iniziali e newline (che si verificano se la coordinata minima non è
0, 0) devono essere presenti - Tutti gli spazi finali e le nuove righe sono consentiti in misura ragionevole (cioè non trascinare come 100000000 newline, è solo fastidioso)
- gli assi x e y possono essere rivolti in entrambi i modi, ma è necessario essere coerenti e specificare quali (il valore predefinito è x-right e y-down)
- le coordinate possono essere indicizzate 0, 1 o 2.
Implementazione Proton di riferimento
Questo è code-golf , quindi l'obiettivo è quello di avere il codice più corto. Buon golf!