計時員


這道練習主要著重於時間長度,但也可以用來做一般性的時間練習。

故事

Sarah 是一位計時員。她真的是最厲害的那一位。當孩子們問她計時員在做什麼時,她最愛拿一罐裝滿白沙的罐子給他們看。「你看,」她說:「我在把時間好好保存起來!」

她實際的工作沒那麼浪漫,但對她來說依然非常有趣、也很有成就感。她帶著裝滿計時設備的包包飛到世界各地的運動賽事,替每一位運動員測量時間。

在這道練習裡,你要為 Sarah 請你替她打造的新計時軟體寫幾個函式。不能有任何失誤,否則要是之後在軟體裡發現 bug,下一個世界紀錄可能就不算數了!你準備好扛下這份責任了嗎?

備註

來自計時硬體的時間資料通常是時間戳(時間、日期時間,甚至帶時區)。它的精度很高,通常可達 1 毫秒,有時甚至到 100 微秒。每一台硬體裝置都有內部時鐘,必須與所有其他裝置同步。

任務

以下是適合計時員這道練習的範例任務:

  • 取開始時間與完成時間的差值,得到持續時間。
  • 有一台計時裝置位於另一個時區。計算兩個不同時區時間的差值。
  • 有一台計時裝置沒有網路連線。前 10 位跑者的計時由一位助手在電話上唸給你聽。這些時間是以 "10h5m19.234s" 這種格式輸入的,必須加以解析。
  • 備份攝影機記錄到提早起跑。用給定的持續時間,從錯誤的開始時間中減去,重新計算出新的開始時間。
  • 賽事進行中會偵測到許多零散的時間。為了忽略所有這些「不想要的」時間,計時員可以只允許某台計時裝置在開始後特定時間範圍內送出的時間,例如開始後 10 分鐘到 30 分鐘之間。建立一個篩選函式,輸入為 start time(時間戳)、from 與 to(持續時間)、detection(時間戳)。
  • 將排行榜上持續時間的輸出格式化為 "1h5m19.234s +4.843",其中 +4.843 是與領先者(第一名的運動員)的差距。

實作

  • 尚無

相關