Los papeles que no se cruzan
- O(n²) · Muy difícil
- Plan completo
- Python
- JavaScript
- conjuntos
- listas
- ordenar
Enunciado
Marisol Quintanar dirige la obra de la casa de cultura y le faltan actores. La salida es que una misma persona haga dos papeles, pero eso solo funciona si esos dos papeles nunca están juntos en una escena: nadie puede aparecer dos veces al mismo tiempo.
Escribe una función que reciba escenas, una lista donde cada escena es la lista de los papeles que salen en ella, en minúsculas, sin acentos y sin repetirse dentro de una escena. Los papeles de la obra son los que aparecen en alguna escena. Regresa la lista de todas las parejas de papeles distintos que nunca coinciden en una escena. Cada pareja es una lista con sus dos papeles en orden alfabético, y las parejas van ordenadas: primero por el papel que va antes y, si ese es el mismo, por el otro.
Con tres escenas, ["bruja", "mago"], ["mago", "reina"] y ["reina", "juez"], una persona puede hacer de bruja y de juez, de bruja y de reina, o de juez y de mago, así que regresas [["bruja", "juez"], ["bruja", "reina"], ["juez", "mago"]].
Si no queda ninguna pareja que se pueda juntar, regresas una lista vacía.
Ejemplos
El ejemplo
[["bruja", "mago"], ["mago", "reina"], ["reina", "juez"]] → [["bruja", "juez"], ["bruja", "reina"], ["juez", "mago"]]
Todos en la misma escena
[["abuela", "cartero", "doctor"]] → []
Cada papel en su escena
[["payaso"], ["tendero"], ["soldado"]] → [["payaso", "soldado"], ["payaso", "tendero"], ["soldado", "tendero"]]
Sin escenas
[] → []
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def papeles_compatibles(escenas):
passJavaScript
function papelesCompatibles(escenas) {
}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.