Determina il tempo più occupato


9

Questa sfida è stata fortemente ispirata da questo post Stack Overflow .

Sfida

Dato un gruppo di clienti in termini di quando entrano in una stanza e quando escono, determinare il periodo (i) di tempo in cui la stanza ha un numero massimo di persone. La risoluzione temporale dovrebbe essere al minuto.

Ad esempio, se ci sono tre clienti 8 - 10, 9 - 11, 10 - 12, quindi la risposta corretta sarebbe 9 - 11; durante questo periodo di tempo, ci sono due clienti nella stanza, che è il più grande possibile.

Ingresso

L'input sarà un elenco di coppie in qualche forma. Può essere un elenco di 2 tuple, un elenco di lunghezza pari con elementi interlacciati, ecc., Qualsiasi formato di input ragionevole. I tempi possono essere indicati in qualsiasi formato ragionevole, in 12 o 24 ore. È inoltre possibile inserire l'ora come numero di minuti trascorsi a mezzanotte.

Produzione

L'output dovrebbe essere un elenco di coppie in qualche forma, ma l'output è più rigoroso. L'output non può essere un elenco semplice, deve essere un elenco di 2 tuple o un elenco di elenchi, ecc. I tempi possono essere emessi in qualsiasi formato ragionevole, in 12 o 24 ore. È inoltre possibile emettere il tempo come il numero di minuti trascorsi a mezzanotte.

Esempi

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

Puoi presumere che la seconda volta in una coppia sarà sempre dopo la prima volta. Gli intervalli di tempo non dureranno oltre la mezzanotte.


Cosa succede se ci sono più intervalli di tempo?
Esolanging Fruit

@ Challenger5 Cosa intendi con più intervalli di tempo, input o output?
HyperNeutrino

@HyperNeutrino Output.
Esolanging Fruit

@ Challenger5 Aggiunto un test case, grazie.
HyperNeutrino,

È 09:00 - 10:00, 10:00 - 11:00un output valido per il primo caso di test?
Leaky Nun

Risposte:


4

Brachylog , 25 byte

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

Provalo online!

C'è una struttura ovvia a questa risposta, che diventa ancora più ovvia se la scrivi in ​​questo modo:

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

Sfortunatamente, l'ordine di valutazione di Brachylog fa sì che il programma vada in un ciclo infinito se si tenta di sfruttare la struttura in questione. Tuttavia, è certamente possibile immaginare un linguaggio simile a Brachylog in cui questo è molto più breve.



1

Brachylog , 58 byte

⟦₂ᵐkᵐcoḅBlᵐ⌉;B↔z{hl~t?}ˢhᵐhᵐ{∋+₁.¬∈?∧|∋.-₁¬∈?∧}ᶠo~c.{l2}ᵐ∧

Provalo online!

Questa deve essere la risposta Brachylog più lunga di sempre ...



0

Mathematica, 104 byte

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

Naturalmente, questo presuppone che diversi incorporati Mathematica ad alta potenza siano corretti ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.