Saltar al contenido

Las horas vigiladas

Enunciado

La casa de la calle Olmo estuvo vigilada varios días seguidos, por turnos de distintos agentes, y a veces dos turnos se enciman. El comisario Paredes quiere saber cuántas horas hubo al menos alguien mirando.

Recibes turnos, una lista de textos "inicio-fin" con horas enteras contadas desde que empezó la vigilancia: "30-36" va de la hora 30 a la 36 y cubre 6 horas. El inicio siempre es menor que el fin, y los turnos llegan en cualquier orden. Regresa un entero: las horas cubiertas por al menos un turno, contando una sola vez las que vigilaron dos agentes. Con "9-12", "11-14" y "20-22" regresas 7: de 9 a 14 son 5, y 2 más.

Un turno puede caber entero dentro de otro: "8-18" y "10-12" dan 10. Dos que se tocan, "9-12" y "12-15", dan 6, sin hueco ni hora doble. Sin turnos, regresas 0.

Ejemplos

  • Dos se enciman y uno aparte

    ["9-12", "11-14", "20-22"] → 7

  • Un turno dentro de otro

    ["8-18", "10-12"] → 10

  • Dos turnos que se tocan

    ["9-12", "12-15"] → 6

  • Ninguno se encima

    ["4-6", "30-33", "60-70"] → 15

  • Horas de dos y tres cifras

    ["130-136", "95-101", "98-104"] → 15

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def horas_vigiladas(turnos):
    pass

JavaScript

function horasVigiladas(turnos) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(n log n)

Ver todos los retos →