Inclusion-Exclusion pozwala obliczyć rozmiary niektórych związków i przecięć między zestawami, znając niektóre inne wartości. Nie wyjaśnię tego dokładnie, ale twoim wyzwaniem jest wizualizacja wykluczenia włączenia na diagramie Venna.
Ponieważ jestem miły, będziesz używać prostokątów, a nie kół.
Otrzymasz listę prostokątów oznaczonych współrzędnymi górnego lewego i prawego dolnego rogu w dowolnym rozsądnym formacie (lista 4 krotek, lista par par, lista par itp.). Możesz założyć, że wszystkie współrzędne są nieujemne i mieszczą się w (rozsądnym) zakresie liczbowym twojego języka (określ, co to jest, jeśli jest mniejsze niż 128). Możesz wybrać opcję obejmującą lewą lub wyłączną lewą i obejmującą prawą lub wyłączną prawą. Bez względu na wybrany format możesz założyć, że wszystkie prostokąty mają co najmniej 1x1.
Następnie musisz narysować każdy prostokąt na ekranie (obszar roboczy ASCII) za pomocą pojedynczej spacji k, którą możesz wybrać.
Jednak za każdym razem, gdy dwa prostokąty zachodzą na siebie, nakładający się obszar zostanie narysowany za pomocą innej spacji l != k, również do wyboru.
Ilekroć trzy prostokąty pokrywają obszar nakładających powinien być narysowany k, a dla nieparzystej liczby prostokątów obejmującego, ki nawet numer, l.
Tłem powinny być pojedyncze białe znaki ( 0x20).
Przypadki testowe ( 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
########
#......#
#.####.#
#.####.#
#.####.#
#.####.#
#......#
########
Notatki
- Spacje wiodące i znaki nowej linii (które występują, jeśli współrzędna minimalna nie jest
0, 0), muszą być obecne - Wszelkie spacje i znaki nowej linii są dozwolone w rozsądnym zakresie (tzn. Nie wyświetlaj śladu jak 100000000 znaków nowej linii, to po prostu denerwujące)
- Osie x i y mogą być skierowane w obie strony, ale musisz być spójny i określić, który (domyślnie jest to x prawo i y-dół)
- współrzędne mogą być indeksowane 0, 1 lub 2.
Referencyjna implementacja protonu
To jest golf golfowy , więc celem jest posiadanie najkrótszego kodu. Miłej gry w golfa!