Los quirófanos del lunes
- O(2ⁿ) · Legendaria
- Plan completo
- Python
- JavaScript
- recursión
- listas
- comparaciones
Enunciado
El lunes a primera hora hay tantas operaciones como cirujanos, y el Dr. Esteban Arce, jefe de cirugía, tiene que repartirlas: a cada cirujano le toca exactamente una operación y ninguna se queda sin cirujano. Cada quien tarda distinto en cada operación, y el doctor quiere que la suma de minutos de todos sea la menor posible.
Escribe una función que reciba tiempos, una lista de listas de enteros de 0 en adelante: tiempos[i][j] son los minutos que tarda el cirujano i en la operación j. Hay tantas filas como columnas, a lo más 7, y la lista puede venir vacía. Regresa un entero: el total de minutos más bajo que se puede lograr con un reparto así.
Con [[3, 5, 4], [2, 6, 7], [5, 3, 9]]: si el cirujano 0 hace la operación 2 (4 minutos), el 1 la operación 0 (2) y el 2 la operación 1 (3), suman 9, y ningún otro reparto baja de ahí. Si cada cirujano, en orden, tomara la operación libre más rápida para él, el 0 se quedaría con la 0 (3) y a los otros les tocarían 6 y 9: 18. Con [[2, 3], [3, 9]] conviene cruzarlos: 3 + 3 = 6. Sin cirujanos, 0.
Ejemplos
El ejemplo
[[3, 5, 4], [2, 6, 7], [5, 3, 9]] → 9
Cruzados
[[2, 3], [3, 9]] → 6
Tomar primero lo más rápido no sirve
[[1, 2, 9, 9], [2, 50, 9, 9], [9, 9, 1, 2], [9, 9, 2, 50]] → 8
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def menor_tiempo(tiempos):
passJavaScript
function menorTiempo(tiempos) {
}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ⁿ)
- Los remeros de Puntrecursión · listas · comparaciones
- Los votos de la Hansarecursión · listas · comparaciones
- Miel a mediasrecursión · listas · comparaciones
- Ritmos sin choquerecursión · textos · listas
- El collar que sale de los dosrecursión · textos · índices
- El grafito de Pompeyarecursión · textos · índices