Определите самое загруженное время

9

Эта проблема была в значительной степени вдохновлена этим постом переполнения стека .

Вызов

Учитывая группу клиентов с точки зрения того, когда они входят в комнату и когда они выходят из нее, определяют период (ы) времени, когда в комнате находится максимальное количество людей. Разрешение по времени должно быть с точностью до минуты.

Например, если есть три клиента 8 - 10, 9 - 11, 10 - 12, то правильный ответ будет 9 - 11; В этот период в комнате находятся два клиента, что является самым большим из возможных.

вход

На входе будет список пар в той или иной форме. Это может быть список из двух кортежей, список четной длины с чередующимися элементами и т. Д., Любой приемлемый формат ввода. Время может быть указано в любом разумном формате, в 12 или 24 часов. Вы также можете ввести время как количество минут после полуночи.

Вывод

Вывод должен быть списком пар в некоторой форме, но вывод будет более строгим. Вывод не может быть простым списком, это должен быть список из двух кортежей или список списков и т. Д. Время может быть выведено в любом приемлемом формате, либо за 12, либо за 24 часа. Вы также можете вывести время как количество минут после полуночи.

Примеры

input
output

INPUT
08:00 - 10:00
09:00 - 11:00
10:00 - 12:00
OUTPUT
09:00 - 11:00

INPUT
08:20 - 09:20
09:00 - 09:10
08:00 - 09:30
08:50 - 10:40
OUTPUT
09:00 - 09:10

INPUT
08:00 - 10:00
09:00 - 10:00
09:30 - 11:00
OUTPUT
09:30 - 10:00 # The output is not always in the input list

INPUT
00:00 - 02:00
01:00 - 03:00
04:00 - 06:00
05:00 - 07:00
OUTPUT # This is the expected output for when there are multiple time ranges with the same "business".
01:00 - 02:00
05:00 - 06:00

Вы можете предположить, что второй раз в паре всегда будет после первого раза. Диапазоны времени не будут работать в течение полуночи.

HyperNeutrino
источник
Что если есть несколько временных диапазонов?
Esolanging Fruit
@ Challenger5 Что вы подразумеваете под несколькими временными диапазонами: вход или выход?
HyperNeutrino
Выход @HyperNeutrino.
Esolanging Fruit
@ Challenger5 Добавил тестовый пример, спасибо.
HyperNeutrino
Является 09:00 - 10:00, 10:00 - 11:00ли действительный вывод для первого контрольного примера?
Дрянная Монахиня

Ответы:

4

Брахилог , 25 байт

⟦₂ᵐkᵐcoḅlᵒlᵍthᵐ~c{~k~⟦₂}ᵐ

Попробуйте онлайн!

В этом ответе есть очевидная структура, которая становится еще более очевидной, если вы напишите его так:

{⟦₂k}ᵐc oḅ lᵒlᵍ thᵐ ~c{~k~⟦₂}ᵐ

К сожалению, порядок оценки Brachylog делает так, что программа идет в бесконечный цикл, если вы пытаетесь воспользоваться рассматриваемой структурой. Тем не менее, безусловно, можно представить себе язык, похожий на брахилог, в котором он намного короче.


источник
0

Pyth , 33 24 байта

JsrMQcSs-M_BhMBS{.M/JZJ2

Попробуйте онлайн!

Дрянная Монахиня
источник
Это, кажется, ведет себя неправильно для этого . Я добавлю это как контрольный пример в вопрос также.
HyperNeutrino
@HyperNeutrino исправлено.
Дрянная Монахиня
Ну, это был быстрый ответ. Хорошая работа!
HyperNeutrino
0

Mathematica, 104 байта

Reduce[#==#~MaxValue~x,x]&@PiecewiseExpand@Tr[Piecewise@{{1,#<=x<#2}}&@@@#]/.{Or->List,a_<=x<b_->{a,b}}&

Конечно, это предполагает, что несколько мощных встроенных модулей Mathematica верны ...

jcai
источник