Esse desafio foi muito inspirado por este post do Stack Overflow .
Desafio
Dado um grupo de clientes em termos de quando eles entram em uma sala e quando eles saem, determine o (s) período (s) de tempo em que a sala tem um número máximo de pessoas. A resolução do tempo deve ser para o minuto.
Por exemplo, se existem três clientes 8 - 10
, 9 - 11
, 10 - 12
, em seguida, a resposta correta seria 9 - 11
; durante esse período, há dois clientes na sala, o maior possível.
Entrada
A entrada será uma lista de pares de alguma forma. Pode ser uma lista de duas tuplas, uma lista de comprimento par com elementos intercalados etc., qualquer formato de entrada razoável. Os horários podem ser fornecidos em qualquer formato razoável, em 12 ou 24 horas. Você também pode inserir a hora como o número de minutos após a meia-noite.
Resultado
A saída deve ser uma lista de pares de alguma forma, mas a saída é mais rígida. A saída não pode ser uma lista simples, deve ser uma lista de duas tuplas ou uma lista de listas, etc. Os horários podem ser exibidos em qualquer formato razoável, em 12 ou 24 horas. Você também pode imprimir o tempo como o número de minutos após a meia-noite.
Exemplos
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
Você pode supor que a segunda vez em um par será sempre após a primeira vez. Os intervalos de tempo não serão executados durante a meia-noite.
09:00 - 10:00, 10:00 - 11:00
uma saída válida para o primeiro caso de teste?Respostas:
Braquilog , 25 bytes
Experimente online!
Existe uma estrutura óbvia para essa resposta, que se torna ainda mais óbvia se você a escrever assim:
Infelizmente, a ordem de avaliação de Brachylog faz com que o programa entre em um loop infinito se você tentar tirar proveito da estrutura em questão. Ainda assim, é certamente possível imaginar uma linguagem semelhante ao Brachylog na qual isso é muito mais curto.
fonte
Geléia ,
222120 bytesExperimente online!
fonte
Braquilog , 58 bytes
Experimente online!
Essa deve ser a resposta Brachylog mais longa de todos os tempos ...
fonte
Pitão ,
3324 bytesExperimente online!
fonte
Mathematica, 104 bytes
Obviamente, isso pressupõe que vários recursos integrados do Mathematica de alta potência estejam corretos ...
fonte