Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

248
Views
Calcular la ocupación más alta durante un período de tiempo

Hola, estoy haciendo un trabajo en el trabajo donde tenemos un sistema de cámara que hace ping cada vez que alguien entra o sale de una habitación, por lo que tendría datos como este:

 {enter:7, exit:6}

lo que debería significar que una persona se queda en la habitación

Quiero saber cuál fue la mayor cantidad de personas en la sala durante un período determinado, digamos 45 minutos. Podría tener de 50 a 100 puntos de datos, ¿cómo puedo saber cuál sería el promedio?

Gracias

// actualice con un ejemplo de código aquí

 .then((results) => { // maybe a correct algorithim results.sort((a, b) => b.enter - a.enter); results.sort((a, b) => b.exit - a.exit); results.sort((a, b) => a.enter - b.enter || b.exit - a.exit); // results.sort(fieldSorter(["enter"])); let final_result = result.pop(); console.log(final_result); if (final_result) { return parseInt(final_result.enter - final_result.exit); } else { return 0; } })

Entonces, antes de este código, estoy reuniendo todos los puntos de datos, luego intente clasificarlos y saque la entrada más alta a las salidas más bajas, pero creo que estoy haciendo esto mal

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Suponiendo que el tiempo de entrada siempre sea menor que el tiempo de salida (lo que contradice los datos de su ejemplo), el problema podría resolverse así:

 function getAverage(startTime, endTime, items) { let slots = {}; for (let timeIndex = startTime; timeIndex <= endTime; timeIndex++) { slots[timeIndex] = 0; } for (item of items) { let enter = Math.min(item.enter, startTime); let exit = Math.min(item.exit, endTime); for (let momentIndex = enter; momentIndex <= exit; momentIndex++) { slots[momentIndex]++; } } let avg = 0; for (let slot of slots) avg += slot; return avg / slots.length; }

EDITAR

Para calcular el máximo puedes hacer algo como esto:

 function getAverage(startTime, endTime, items) { let slots = {}; for (let timeIndex = startTime; timeIndex <= endTime; timeIndex++) { slots[timeIndex] = 0; } for (item of items) { let enter = Math.min(item.enter, startTime); let exit = Math.min(item.exit, endTime); for (let momentIndex = enter; momentIndex <= exit; momentIndex++) { slots[momentIndex]++; } } let max = 0; for (let slot of slots) max = Math.max(max, slot); return max; }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!