Дан список диапазонов дат в r
качестве входных, выходных или возвращаемых диапазонов, не найденных в r
.
Ради этого примера ввод будет в YYYY-MM-DD
формате.
Допустим, у вас есть три диапазона дат:
[2019-01-01, 2019-02-01]
[2019-02-02, 2019-04-05]
[2019-06-01, 2019-07-01]
Вы можете видеть, что между 2019-04-05
и 2019-06-01
.
Результатом будет этот разрыв: [2019-04-06, 2019-05-31]
правила
- Ввод и вывод могут быть в любой разумной форме даты или коллекции, если они согласованы.
- Предположим, что вход не упорядочен.
- Ваш диапазон дат не обязательно должен быть
[latest, earliest]
, но он должен следовать правилу 2. - Предположим, что во входных данных нет перекрывающихся дат
Тестовые случаи:
Входные данные: [[2019-01-01, 2019-02-01],[2019-02-02, 2019-04-05],[2019-06-01, 2019-07-01]]
Выход: [[2019-04-06, 2019-05-31]]
Входные данные: [[2019-01-01, 2019-02-01],[2018-02-02, 2018-04-05],[2019-06-01, 2019-07-01]]
Выход: [[2018-04-06, 2018-12-31], [2019-02-02, 2019-05-31]]
Входные данные: [[2019-01-01, 2019-02-01],[2019-02-02, 2019-03-02],[2019-03-03, 2019-07-01]]
Выход: []
Входные данные: [[2019-01-01, 2019-02-01], [2019-11-02, 2019-11-20]]
Выход: [[2019-02-02, 2019-11-01]]
Входные данные: [[2019-01-01, 2019-02-01],[2019-02-03, 2019-04-05]]
Выход: [[2019-02-02, 2019-02-02]]
или[[2019-02-02]]
YYYY-MM-DD
как текущий формат является чужим для многих, и его еще труднее разобрать из-за использования маленьких дней месяца≤12.Ответы:
APL (Dyalog Extended) ,
282524 байтаФункция анонимного молчаливого префикса. Аргумент и результат - это матрицы из 2-х дневных чисел, начиная с эпохи, каждая строка представляет диапазон.
Попробуйте онлайн! Функция
In
препроцессора преобразует из списка пар трехэлементных списков (даты в порядке ISO) в 2-колоночную матрицу ИДИ, номеров международных дней (дни с 1899-12-31). ВOut
функции преобразует постпроцессор от матрицы IDNs к матрице из списков 3-элемента.∧
сортировать строки по возрастанию1⌽
циклически поворачивайте даты на один шаг влево,⍢,
пока выровняйтесь (выровняйте) - потом вернитесь к исходной форме1 ¯1+
добавьте один и отрицательный,⍤1
используя этот список для каждой строки∘
результата{
…}
следующей лямбды:⍵
аргумент-⍨/
вычитает левую дату из правой даты,1<
маску строки, где различия превышают один (т. е. где диапазоны не являются смежными)⍵⌿⍨
фильтр строки этой маскойисточник
C # (интерактивный компилятор Visual C #) , 108 байт
Выводится на печать в формате
DD/MM/YYYY 12:00:00 AMDD/MM/YYYY 12:00:00 AM
. Будет вызывать исключение IndexOutOfRange, что хорошо для мета-консенсуса.Попробуйте онлайн!
Если мы примем данные в виде дней, прошедших с эпохи Unix, мы можем получить это до ...
83 байта
Попробуйте онлайн!
Мы можем играть в гольф еще дальше с
/u:System.Array
флагом, для ...78 байт
Попробуйте онлайн!
источник
Perl 5, 130 байт
TIO
источник
Баш, 125 байт
TIO
источник
Perl 6 , 46 байт
Попробуйте онлайн!
Принимает список
Date
пар.источник
PHP,
208 197 190177 байтHunky Chunky сидел на стене ... хотя новый подход имел некоторый потенциал для игры в гольф.
Функция принимает массив диапазонов [start, end] в формате ISO, печатает интервалы пропусков. Попробуйте онлайн .
сломать
источник
Желе , 13 байт
У желе (в настоящее время) нет встроенных дат, поэтому используются дни с тех пор.
Входной список диапазонов (пары целых чисел) может быть в смешанном порядке и в смешанных направлениях.
Результатом является список возрастающих диапазонов в порядке возрастания.
Попробуйте онлайн! (форматы нижнего колонтитула, чтобы показать пустой список как
[]
)Как?
Примечание. Это зависит от гарантии того, что «во входных данных нет перекрывающихся дат», как указано в правилах.
источник
C # (интерактивный компилятор Visual C #) , 103 байта
Попробуйте онлайн!
Ввод - это список кортежей даты начала / окончания. Выводит каждый пропущенный диапазон в STDOUT.
источник
R , 88 байт
Попробуйте онлайн!
В качестве входных данных используется фрейм данных диапазонов дат, а фрейм данных выводится с пропущенными диапазонами. Я вполне уверен, что это может быть больше в гольфе, но я столкнулся с проблемами
c
,cbind
и другие раздеваются на свидании.источник