Dia 26: Informe de productividad de los elfos
¡Santa Claus ya ha repartido todos los regalos! Ahora está revisando los informes de productividad de los elfos. Pero hay un problema: la Product Owner, Mrs. Claus 🧑🎄✨, necesita entender rápidamente si los elfos cumplieron con los tiempos estimados. Están haciendo Agile Scream.
Para ayudar a Mrs. Claus, tu tarea es calcular el porcentaje completado de cada tarea y devolverlo redondeado al número entero más cercano. Esto le permitirá planificar mejor para la próxima Navidad y mantener a todos contentos.
Esta es la función que espera:
getCompleted('01:00:00', '03:00:00') // 33%
getCompleted('02:00:00', '04:00:00') // 50%
getCompleted('01:00:00', '01:00:00') // 100%
getCompleted('00:10:00', '01:00:00') // 17%
getCompleted('01:10:10', '03:30:30') // 33%
getCompleted('03:30:30', '05:50:50') // 60%
🎁 Ahora Santa Claus y los elfos merecen un descanso. ¡Esperamos que hayan disfrutado el AdventJS y lo recomienden a sus amigos!
Solution
function getCompleted(timeWorked, totalTime) {
const getSeconds = (time) => {
const [hours, minutes, seconds] = time.split(':').map(Number)
return hours * 3600 + minutes * 60 + seconds
}
const partSeconds = getSeconds(timeWorked)
const totalSeconds = getSeconds(totalTime)
const gcd = (a, b) => {
while (b) {
[a, b] = [b, a % b]
}
return a
}
const divisor = gcd(partSeconds, totalSeconds)
const numerator = partSeconds / divisor
const denominator = totalSeconds / divisor
return `${Math.round((numerator / denominator) * 100)}%`
}
getCompleted('01:00:00', '03:00:00')