La guardia completa
- O(2ⁿ) · Legendaria
- Plan completo
- Python
- JavaScript
- recursión
- listas
- textos
Enunciado
Esta noche la guardia del hospital tiene que cubrir varias especialidades, y la doctora Carmen Villalobos está haciendo llamadas. Cada médico disponible atiende algunas especialidades. No quiere despertar a nadie de más: busca el grupo más chico que, entre todos, cubra lo que hace falta.
Escribe una función que reciba faltan, una lista de textos con las especialidades que hacen falta (sin repetir; puede venir vacía), y medicos, una lista donde cada elemento es la lista de especialidades que atiende un médico, como ["pediatría", "urología"] (puede traer especialidades que nadie pidió; la lista de médicos puede venir vacía). Regresa un entero: el menor número de médicos que hay que llamar para que cada especialidad de faltan la atienda al menos uno de ellos. Si ni llamando a todos se cubren, regresa -1.
Por ejemplo, faltan cardiología, neurología, pediatría, traumatología, ginecología y ortopedia, y hay tres médicos. El primero atiende pediatría, traumatología, ginecología y ortopedia; el segundo, cardiología, pediatría y ginecología; el tercero, neurología, traumatología y ortopedia. Basta con llamar al segundo y al tercero: regresa 2. Si no falta ninguna especialidad, no hay que llamar a nadie: regresa 0.
Ejemplos
El ejemplo
["cardiología", "neurología", "pediatría", "traumatología", "ginecología", "ortopedia"], [["pediatría", "traumatología", "ginecología", "ortopedia"], ["cardiología", "pediatría", "ginecología"], ["neurología", "traumatología", "ortopedia"]] → 2
Nadie atiende neurología
["cardiología", "neurología"], [["cardiología"], ["cardiología", "ortopedia"]] → -1
Una sola médica lo cubre todo
["cardiología", "neurología", "pediatría"], [["neurología"], ["pediatría", "neurología", "cardiología"], ["cardiología"]] → 1
No falta ninguna especialidad
[], [["cardiología"]] → 0
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def llamadas(faltan, medicos):
passJavaScript
function llamadas(faltan, medicos) {
}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(2ⁿ)
- La palabra de elementosrecursión · textos · índices
- Las bolsas de Mansa Musarecursión · listas · índices
- Las casas de Xibalbárecursión · listas · ciclos
- Las cucharas del abuelorecursión · listas · índices
- Las cuentas de Lilavatirecursión · textos · índices
- Las hornadas de la mañanarecursión · listas · diccionarios