计时员


这道练习主要围绕时长展开,但也能当作通用的时间练习来使用。

故事

莎拉是一名计时员。她还是这一行里最出色的那个。当孩子们问她计时员都做些什么时,她喜欢拿出一罐白沙给他们看。“瞧,”她说,“我在守护时间呢!”

她的实际工作并没有那么浪漫,但对她来说依然是一份非常有趣、很有成就感的工作。她带着装满计时设备的包飞往世界各地的体育赛事,测量每一位运动员的用时。

在这道练习里,你要为莎拉请你开发的这套新计时软件编写一些函数。这里容不得任何差错,否则一旦事后在软件里发现了 bug,下一个世界纪录可能就不作数了!你准备好扛起这份责任了吗?

说明

计时硬件传回的数据通常是一个时间戳(时间、日期时间,甚至带时区)。它的精度很高,通常可达 1 毫秒,有时甚至高达 100 微秒。每个硬件设备都有内部时钟,必须与所有其他设备保持同步。

任务

以下是适合计时员练习的一些示例任务:

  • 用开始时间与结束时间相减,得到时长。
  • 有一台计时设备位于另一个时区。计算两个处于不同时区的时间之差。
  • 有一台计时设备没有网络连接。前 10 名跑者的成绩由一位助手在电话里念给你听,并按 “10h5m19.234s” 的格式录入,你需要解析它。
  • 一次提前起跑被备用摄像机记录了下来。从错误的起跑时间中减去给定的时长,重新计算出新的起跑时间。
  • 比赛期间会检测到大量杂散时间。为了能忽略这些“不需要”的时间,计时员可以只接受某台计时设备在起跑后特定时段内的时间,比如起跑后 10 分钟到 30 分钟之间。编写一个过滤函数,输入为 start time(时间戳)、from和to(时长)、detection(时间戳)。
  • 把排行榜上时长的输出格式化为 “1h5m19.234s +4.843”,其中+4.843是与领跑者(排在首位的运动员)的差值。

实现

  • 暂无

相关