Ce défi a été grandement inspiré par ce post Stack Overflow .
Défi
Étant donné un groupe de clients en termes de moment où ils entrent dans une salle et quand ils en sortent, déterminez la ou les périodes pendant lesquelles la salle a un nombre maximum de personnes. La résolution de l'heure doit être à la minute près.
Par exemple, s'il y a trois clients 8 - 10
, 9 - 11
, 10 - 12
, la bonne réponse est 9 - 11
; pendant cette période, il y a deux clients dans la salle, ce qui est le plus grand possible.
Contribution
L'entrée sera une liste de paires sous une forme quelconque. Cela peut être soit une liste de 2 tuples, une liste de longueur paire avec des éléments entrelacés, etc., n'importe quel format d'entrée raisonnable. Les heures peuvent être données dans n'importe quel format raisonnable, au format 12 ou 24 heures. Vous pouvez également saisir l'heure comme le nombre de minutes après minuit.
Production
La sortie doit être une liste de paires sous une forme quelconque, mais la sortie est plus stricte. La sortie ne peut pas être une liste plate, elle doit être une liste de 2 tuples ou une liste de listes, etc. Les heures peuvent être sorties dans n'importe quel format raisonnable, au format 12 ou 24 heures. Vous pouvez également afficher l'heure comme le nombre de minutes après minuit.
Exemples
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
Vous pouvez supposer que la deuxième fois dans une paire sera toujours après la première fois. Les plages horaires ne s'exécuteront pas à minuit.
09:00 - 10:00, 10:00 - 11:00
une sortie valide pour le premier cas de test?Réponses:
Brachylog , 25 octets
Essayez-le en ligne!
Il y a une structure évidente à cette réponse, qui devient encore plus évidente si vous l'écrivez comme ceci:
Malheureusement, l'ordre d'évaluation de Brachylog fait en sorte que le programme passe dans une boucle infinie si vous essayez de profiter de la structure en question. Pourtant, il est certainement possible d'imaginer un langage de type Brachylog dans lequel il est beaucoup plus court.
la source
Gelée ,
222120 octetsEssayez-le en ligne!
la source
Brachylog , 58 octets
Essayez-le en ligne!
Ce doit être la réponse Brachylog la plus longue jamais ...
la source
Pyth ,
3324 octetsEssayez-le en ligne!
la source
Mathematica, 104 octets
Bien sûr, cela suppose que plusieurs modules intégrés Mathematica haute puissance sont corrects ...
la source