Skip to content

Latest commit

 

History

History
66 lines (45 loc) · 1.63 KB

13.md

File metadata and controls

66 lines (45 loc) · 1.63 KB

⬅️ Regresar

Reto #13: ⌚️ Calculando el tiempo

Instrucciones

Los elfos están preparando la víspera de Navidad y necesitan tu ayuda para calcular si van sobrados o no de tiempo ⏳.

Para ello te pasan un array con la duración de cada entrega. El formato de la duración es HH:mm:ss, las entregas empiezan a las 00:00:00 y el límite de tiempo es 07:00:00.

Tu función debe devolver el tiempo que les faltará o el tiempo que les sobrará para terminar las entregas. El formato de la duración devuelta debe ser HH:mm:ss.

Si terminan antes de las 07:00:00, el tiempo restante hasta las 07:00:00 debe ser mostrado con un signo negativo. Por ejemplo, si sobran 1 hora y 30 minutos, devuelve -01:30:00

calculateTime(['00:10:00', '01:00:00', '03:30:00'])
// '-02:20:00'

calculateTime(['02:00:00', '05:00:00', '00:30:00'])
// '00:30:00'

calculateTime([
  '00:45:00',
  '00:45:00',
  '00:00:30',
  '00:00:30'
]) // '-05:29:00'


Solución

function calculateTime (deliveries) {
	let time = 0

	deliveries.map(delivery => {
		time += +delivery.split(":")[0] * 60 * 60
		time += +delivery.split(":")[1] * 60
		time += +delivery.split(":")[2]
	})

	time -= 25200
	const hh = Math.floor(Math.abs(time / 3600))
	const mm = Math.floor(Math.abs((time / 60)) - hh * 60)
	const ss = Math.abs(time % 60)

	return `${time > - 1 ? "" : "-"}${(Math.abs(hh) + "")
	.padStart(2, "0")}:${((mm === 60 ? 0 : mm) + "")
	.padStart(2, "0")}:${(ss + "").padStart(2, "0")}`
}

Puntaje: 240


⬅️ Regresar