Включение-Исключение позволяет вычислять размеры некоторых объединений и пересечений между наборами, зная некоторые другие значения. Я не буду объяснять это точно, но ваша задача - визуализировать включение-исключение на диаграмме Венна.
Потому что я хороший, вы будете использовать прямоугольники, а не круги.
Вам будет предоставлен список прямоугольников, обозначенных координатами верхнего левого и нижнего правого углов в любом приемлемом формате (список из четырех кортежей, список пар, список пар и т. Д.). Вы можете предположить, что все координаты неотрицательны и находятся в пределах (разумного) диапазона номеров вашего языка (укажите, что это, если оно меньше 128). Вы можете выбрать включение слева или исключение слева и включение справа или исключение справа. Независимо от выбранного формата вы можете предположить, что все прямоугольники имеют размер не менее 1x1.
Затем вы должны нарисовать каждый прямоугольник на экране (холст ASCII), используя один непробельный символ k
, который вы можете выбрать.
Однако всякий раз, когда два прямоугольника перекрываются, область перекрытия должна быть нарисована другим непробельным символом l != k
, также вашим выбором.
Всякий раз, когда три прямоугольника перекрываются, область перекрытия должна быть нарисована с k
и для нечетного числа охватывающих прямоугольников k
и четного числа l
.
Фон должен быть одним пробелом ( 0x20
).
Тестовые случаи ( 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
########
#......#
#.####.#
#.####.#
#.####.#
#.####.#
#......#
########
Заметки
0, 0
Должны присутствовать начальные пробелы и символы новой строки (которые появляются, если минимальная координата отсутствует )- Любые завершающие пробелы и переводы строк разрешены в разумных пределах (т. Е. Не трейлинг, как 100000000 переходов, это просто раздражает)
- Оси x и y могут быть направлены в любую сторону, но вы должны быть последовательными и указать, какой (по умолчанию - x-right и y-down)
- координаты могут быть 0-, 1- или 2-индексированными.
Это код-гольф , поэтому цель - получить самый короткий код. Удачного игры в гольф!