确定最繁忙的时间


9

这个挑战极大地受到了Stack Overflow帖子的启发。

挑战

给定一堆客户有关他们何时进入房间和何时离开房间的信息,请确定房间中人数最多的时间段。时间分辨率应为分钟。

例如,如果有三个客户8 - 109 - 1110 - 12,那么正确的答案是9 - 11,在此期间,会议室中有两个客户,这是最大的可能。

输入项

输入将是某种形式的成对列表。可以是2元组的列表,也可以是元素交织的偶数列表,等等,可以是任何合理的输入格式。时间可以以任何合理的格式给出,可以是12小时或24小时制。您也可以输入时间作为午夜后的分钟数。

输出量

输出应该是以某种形式的成对列表,但是输出更严格。输出不能是平面列表,它必须是2元组列表或列表列表等。时间可以以任何合理的格式输出,可以是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

您可能会假设一对中的第二次总是在第一次之后。时间范围不会超过午夜。


如果有多个时间范围怎么办?
硕果累累

@ Challenger5您表示输入或输出多个时间范围是什么意思?
HyperNeutrino'5

@HyperNeutrino输出。
硕果累累

@ Challenger5添加了一个测试用例,谢谢。
HyperNeutrino

09:00 - 10:00, 10:00 - 11:00第一个测试用例是否有效?
Leaky Nun

Answers:


4

Brachylog,25个字节

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

在线尝试!

这个答案有一个显而易见的结构,如果您这样编写,它将变得更加明显:

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

不幸的是,如果您尝试利用所讨论的结构,则Brachylog的评估顺序使该程序陷入无限循环。不过,当然有可能想象到类似Brachylog的语言,该语言要短得多。



1

Brachylog,58个字节

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

在线尝试!

这必须是有史以来最长的Brachylog答案...



0

Mathematica,104个字节

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

当然,这是假设几个大功率的Mathematica内置模块是正确的...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.