Las rutas del metro
- O(2ⁿ) · Legendaria
- Plan completo
- Python
- JavaScript
- recursión
- listas
- ciclos
Enunciado
Ximena va en metro de su casa al trabajo y ya se aburrió de hacer siempre el mismo camino. Quiere saber cuántas rutas distintas tiene, para ir variando. Las estaciones se numeran desde 0: su casa está junto a la estación 0 y su trabajo junto a la última.
Escribe una función que reciba conexiones, una lista con una entrada por estación (hay al menos una y a lo más 12): conexiones[i] es la lista de estaciones a las que se llega directo desde la estación i.
Las conexiones siempre van hacia adelante, a una estación con número mayor, así que nunca se regresa, y en una misma lista no se repite ninguna estación. Regresa un entero: cuántas rutas distintas van de la estación 0 a la última. Dos rutas son distintas si la lista de estaciones por las que pasan no es la misma.
Con [[1, 2], [3], [3], []] puede ir por 0, 1, 3 o por 0, 2, 3:
regresa 2. Con [[1, 2, 3], [2, 3], [3], []] hay 4 rutas: 0, 3; 0, 1, 3; 0, 2, 3 y 0, 1, 2, 3. Si no hay manera de llegar, regresa 0. Si solo hay una estación, la casa y el trabajo quedan junto a la misma, y eso cuenta como una ruta: regresa 1.
Ejemplos
Dos caminos
[[1, 2], [3], [3], []] → 2
Cuatro rutas
[[1, 2, 3], [2, 3], [3], []] → 4
Una estación sin salida
[[1, 2], [], [3], []] → 1
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def rutas_metro(conexiones):
passJavaScript
function rutasMetro(conexiones) {
}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 contrapesos del satéliterecursión · listas · operaciones
- Los cortes de la tablarecursión · listas · diccionarios
- Los interruptores del laboratoriorecursión · listas
- Los módulos en cohetesrecursión · listas · booleanos · división
- Los quirófanos del lunesrecursión · listas · comparaciones
- Los remeros de Puntrecursión · listas · comparaciones