簡體   English   中英

如何計算一個時間段內的不同分鍾

[英]How to calculate distinct minutes in a time period

不確定與眾不同是否是正確的詞。

這是一個虛構的場景,用來解釋我想要得到的東西。

假設有兩個美發沙龍。

沙龍A有2名員工。 沙龍B有1名員工。

假設我要計算給定小時內沙龍活動的分鍾數。

如果沙龍A具有以下頭發任命:

  • 客戶A:從0分鍾開始,到10分鍾結束(剪發10分鍾)
  • 客戶B:從2分鍾開始,到12分鍾結束(剪發10分鍾)

沙龍B的發型如下:

  • 客戶C:從0分鍾開始,到10分鍾結束(剪發10分鍾)
  • 客戶D:始於10分鍾,始於20分鍾(剪發10分鍾)

在這種情況下,我想看看:

  • 沙龍A-12分鍾活動
  • 沙龍B-活動20分鍾

然后,我可以說,如果客戶E去沙龍A,他們將等待隊列中每個前面的人大約6分鍾去理發,但是如果他們去沙龍B,則將等待10分鍾。對於他們前面的每個客戶。 (活動按客戶完成划分)。 我需要一種無需依賴沙龍員工人數即可計算出的方法。

我能想到的一種方法是擁有一個數組,並用唯一的分鍾數填充它。 例如激怒預訂,並將每一分鍾添加到數組中,隨后的預訂將只寫出已經填寫的現有分鍾數,然后我將得到一個包含沙龍A的12個項目(分鍾)和一個包含20個項目(分鍾)的數組),對於沙龍B。我相信這會奏效,但想知道是否有更好/更實用的方法?

我不在乎什么語言只想看邏輯。

這里是使用JavaScript的簡單嘗試。

假設每個客戶10分鍾,這是一個常數。 因此,對於沙龍B來說,這非常容易:只有1個理發師,活動時間是10 *客戶數量

現在,對於沙龍A,說app是一個數組,用於存儲每個約會的起點。 例如:

var app = [0, 2, 10, 13, 20, 32]

這意味着有6個客戶(可能像這樣:理發師A有0-10、10-20、20-30、32-42,理發師B有2-12、13-23,不良理發師A)。

而且我們還有一個timeline 讓我們遍歷app

var timeline = [];
for(var i = 0; i < app.length; i++) {
    for(var j = app[i]; j < app[i] + 10; j++) {
        timeline[j] = 1;
    }
}

現在, timeline明確記錄了每一個活動的分鍾,也包含不活動的漏洞。 1表示有效, undefined表示無效。

然后,我們減少timeline ,它將自動跳過undefined

var activity = timeline.reduce(function(a, b) {
    return a + b;
});
activity; // 40
  1. 你說對了!

編輯:這只是一個解決方案,我確定還有其他解決方案,可能會比這個解決方案好:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM