Найти пересечение 2 множеств в объединенной нотации
Учитывая два набора действительных чисел, описанных как объединение интервалов, выведите описание пересечения этих двух наборов как объединение интервалов одного типа.
Входные наборы всегда будут состоять из объединений интервалов, так что каждый интервал начинается и заканчивается с другим целым числом (т. Е. Ни один интервал не имеет меры ноль). Однако разные интервалы в одном и том же наборе могут начинаться или заканчиваться в одном и том же целом числе или совпадать.
Выходной набор также должен представлять собой объединение интервалов, которые начинаются и заканчиваются на целые числа, но ни один интервал в выходных данных не может перекрывать любые другие, даже в одном целом числе.
Ввод может принимать любую форму, которая подходит для вашего языка по вашему выбору, если он состоит из двух списков пар целых чисел.
Например, вы можете представить набор как:
[-10,-4]u[1,5]u[19,20]
Или как:
[[-10,-4],[1,5],[19,20]]
Или как:
[-10,-4;1,5;19,20]
Ваше выходное представление должно быть идентично вашему входному представлению (за исключением того, что это только один список интервалов вместо двух).
Примеры / Тестовые случаи:
Входные данные:
[[[-90,-4],[4,90]],[[-50,50]]]
Вывод:
[[-50,-4],[4,50]]
Другими словами, мы пересекаем множество, которое содержит все действительные числа от -90 до -4 и все действительные числа от 4 до 90 с множеством, которое содержит все действительные числа от -50 до 50. Пересечение - это множество, содержащее все действительные числа от -50 до -4 и все действительные числа от 4 до 50. Более наглядное объяснение:
-90~~~~~-4 4~~~~~90 intersected with
-50~~~~~~~~50 yields:
-50~-4 4~~50
Входные данные:
"[-2,0]u[2,4]u[6,8]
[-1,1]u[3,5]u[5,9]"
Вывод:
"[-1,0]u[3,4]u[6,8]"
Входные данные:
[-9,-8;-8,0;-7,-6;-5,-4]
[-7,-5;-1,0;-8,-1]
Вывод:
[-8,0]
Неверный вывод (даже если он представляет один и тот же набор):
[-8,0;-7,-5;-5,0]
Подсчет очков:
Это код-гольф, поэтому выигрывает самый короткий источник в байтах, который может быть изменен следующим бонусом.
Бонус:
-15%, если вы также поддерживаете положительную и отрицательную бесконечность в качестве границ интервалов. Вы можете выбрать, какие токены представляют эти числа. (И да, бесконечность - это число в гиперреалах; P)
[[[4,90],[-90,-4]],[[-50,50]]]