簡體   English   中英

如何編寫算法來找出不同員工同時在辦公室的次數?

[英]How to write an algorithm to find out how many times different employee were at the office at the same time?

公司需要知道在同一時間范圍內有哪些員工在辦公室

此練習旨在輸出一個包含成對員工的表格以及他們在辦公室中重合的頻率。 輸入:員工的姓名和他們的工作時間表,指明時間和小時數。 這應該是一個包含至少五組數據的 .txt 文件。 您可以包含以下示例中的數據:

示例 1:

輸入

RENE=MO10:00-12:00,TU10:00-12:00,TH01:00-03:00,SA14:00-18:00,SU20:00- 21:00
ASTRID=MO10:00-12:00,TH12:00-14:00,SU20:00-21:00
ANDRES=MO10:00-12:00,TH12:00-14:00,SU20:00-21:00

輸出:

ASTRID-RENE: 2
ASTRID-ANDRES: 3
RENE-ANDRES: 2

示例 2:輸入:

RENE=MO10:15-12:00,TU10:00-12:00,TH13:00-13:15,SA14:00-18:00,SU20:00-21:00
ASTRID=MO10:00-12:00,TH12:00-14:00,SU20:00-21:00

輸出:

RENE-ASTRID: 3

這是我到目前為止只比較兩名員工的代碼。 我正在從.txt 文件中獲取數據。

    const obj = {
  ANDRES: ['MO10:00-12:00', 'TH12:00-14:00', 'SU20:00-21:00'],
  RENE: ['MO10:00-12:00', 'TU10:00-12:00', 'TH01:00-03:00', 'SA14:00-18:00', 'SU20:00-21:00']
}



 function loop1(obj){
  let counter = 0
  for(let i = 0; i < obj.ANDRES.length; i++){
    for(let k = 0; k < obj.RENE.length; k++){
      if(obj.ANDRES[i] === obj.RENE[k]){
        counter++
      }
    }
  }
  console.log(`ANDRES-RENE: ${counter}`)
}

loop1(obj)

輸出

ANDRES-RENE: 2

三個或三個以上的人怎么辦?

您可以通過使用另外 2 個匹配每對的循環來比較超過 2 個人。 這類似於交換一些數字的排序算法。

 var obj = { AVI: ["AVI hours"], BEN: ["BEN hours"], CAT: ["CAT hours"], DAD: ["DAD hours"], } var keys = Object.keys(obj) for (var i = 0; i < keys.length - 1; i++) { for (var j = i + 1; j < keys.length; j++) { var a = obj[keys[i]]; var b = obj[keys[j]]; var overlaps = countOverlaps(a, b) console.log(keys[i] + " and " + keys[j] + " have " + overlaps + " overlaps"); } } function countOverlaps(a_hours, b_hours) { // split and compare... return 2; }

暫無
暫無

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

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