Las casas de Xibalbá
- O(2ⁿ) · Legendaria
- Plan completo
- Python
- JavaScript
- recursión
- listas
- ciclos
Enunciado
En el Popol Vuh, los señores de Xibalbá ponen a prueba a los gemelos Hunahpú e Ixbalanqué: tienen que pasar una noche en cada una de sus casas, la Casa Oscura, la del Frío, la de los Jaguares y las demás. El orden lo eligen ellos, pero algunas casas solo se abren después de haber pasado por otras. Antes de entrar, los gemelos quieren saber cuántos caminos tienen.
Las casas se numeran desde 0. Recibes antes, una lista con una lista por casa: antes[i] trae los números de las casas que tienen que haber recorrido antes de entrar a la casa i, en cualquier momento anterior, no forzosamente justo antes. Puede venir vacía y nunca incluye a i. Regresa, como entero, en cuántos órdenes distintos pueden recorrer todas las casas, cada una una sola vez, sin romper ningún requisito.
Con [[], [], [0]] la casa 2 pide la 0, y sirven 0, 1, 2; 1, 0, 2 y 0, 2, 1: regresas 3. Con [[], [0], [0], [1, 2]] la 0 va primero y la 3 al final, y en medio van la 1 y la 2 en cualquier orden: regresas 2.
Si los requisitos se contradicen y no hay manera de recorrerlas todas, regresa 0. Si no hay casas, hay un solo orden, el que no entra a ninguna: regresa 1.
Ejemplos
El primer ejemplo
[[], [], [0]] → 3
El segundo ejemplo
[[], [0], [0], [1, 2]] → 2
Un solo orden posible
[[], [0], [1], [2]] → 1
Sin requisitos
[[], [], [], []] → 24
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def ordenes(antes):
passJavaScript
function ordenes(antes) {
}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ⁿ)
- Las cucharas del abuelorecursión · listas · índices
- Las cuentas de Lilavatirecursión · textos · índices
- Las hornadas de la mañanarecursión · listas · diccionarios
- Las rutas del metrorecursión · listas · ciclos
- Los contrapesos del satéliterecursión · listas · operaciones
- Los cortes de la tablarecursión · listas · diccionarios