Este desafío se inspiró en gran medida en esta publicación de Stack Overflow .
Desafío
Dado un grupo de clientes en términos de cuándo ingresan a una habitación y cuándo salen, determine el período de tiempo en que la habitación tiene un número máximo de personas. La resolución del tiempo debe ser al minuto.
Por ejemplo, si hay tres clientes 8 - 10
, 9 - 11
, 10 - 12
, entonces la respuesta correcta sería 9 - 11
; Durante este período, hay dos clientes en la sala, que es el más grande posible.
Entrada
La entrada será una lista de pares de alguna forma. Puede ser una lista de 2 tuplas, una lista de longitud par con elementos intercalados, etc., cualquier formato de entrada razonable. Los horarios se pueden dar en cualquier formato razonable, ya sea en 12 o 24 horas. También puede ingresar el tiempo como el número de minutos después de la medianoche.
Salida
La salida debe ser una lista de pares de alguna forma, pero la salida es más estricta. La salida no puede ser una lista plana, debe ser una lista de 2 tuplas o una lista de listas, etc. Las horas pueden salir en cualquier formato razonable, ya sea en 12 o 24 horas. También puede mostrar el tiempo como el número de minutos después de la medianoche.
Ejemplos
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
Puede suponer que la segunda vez en un par siempre será después de la primera. Los rangos de tiempo no se ejecutarán durante la medianoche.
09:00 - 10:00, 10:00 - 11:00
una salida válida para el primer caso de prueba?Respuestas:
Brachylog , 25 bytes
Pruébalo en línea!
Hay una estructura obvia para esta respuesta, que se vuelve aún más obvia si la escribe así:
Desafortunadamente, el orden de evaluación de Brachylog hace que el programa entre en un ciclo infinito si intenta aprovechar la estructura en cuestión. Aún así, ciertamente es posible imaginar un lenguaje similar a Brachylog en el que esto es mucho más corto.
fuente
Jalea ,
222120 bytesPruébalo en línea!
fuente
Brachylog , 58 bytes
Pruébalo en línea!
Esta tiene que ser la respuesta más larga de Brachylog ...
fuente
Pyth ,
3324 bytesPruébalo en línea!
fuente
Mathematica, 104 bytes
Por supuesto, esto supone que varias funciones integradas de Mathematica de alta potencia son correctas ...
fuente