Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/carlosgomezc7/plataforma_aprendizaje/llms.txt

Use this file to discover all available pages before exploring further.

recuperar_historial_recursivo recorre un árbol de dependencias de módulos completados usando traversal recursivo en profundidad (DFS) y produce una cadena de texto con formato visual jerarquizado. Cada llamada recursiva incrementa el nivel de indentación en dos espacios, de modo que los módulos hijo aparecen visualmente anidados bajo su módulo padre, permitiendo reconstruir de un vistazo la ruta de aprendizaje completa de un estudiante.

Firma

def recuperar_historial_recursivo(
    modulo_actual: str,
    historial_completo: dict[str, list[str]],
    nivel: int = 0
) -> str

Parámetros

modulo_actual
string
required
Nombre del módulo que se va a renderizar en la iteración actual. En la llamada inicial, es la raíz del árbol (por ejemplo, "Proyecto Final").
historial_completo
dict
required
Diccionario que mapea cada módulo padre a la lista de sus submódulos completados: {nombre_modulo: [submodulo_1, submodulo_2, ...]}. Los módulos hoja (sin hijos) simplemente no aparecen como claves del diccionario.
nivel
int
default:"0"
Nivel de indentación actual. Se incrementa en 1 en cada llamada recursiva. No es necesario pasarlo en la llamada inicial; su valor por defecto 0 produce la línea raíz sin sangría.

Valor de retorno

Una cadena de texto multilínea donde cada línea tiene el formato " " * nivel + "- Módulo Completado: {nombre}\n". Cada nivel de profundidad agrega dos espacios adicionales de sangría al comienzo de la línea.

Caso base y caso recursivo

  • Caso base: si modulo_actual no aparece como clave en historial_completo, el módulo es una hoja del árbol. La función devuelve una única línea formateada con la indentación correspondiente y termina la recursión por esa rama.
  • Caso recursivo: si modulo_actual aparece como clave, la función itera sobre su lista de submódulos y se llama a sí misma para cada uno, incrementando nivel en 1. Los resultados de esas llamadas se concatenan a la cadena acumulada.

Ejemplo

historial = {
    "Proyecto Final": ["Desarrollo Backend", "Desarrollo Frontend"],
    "Desarrollo Backend": ["Bases de Datos", "Lógica de Programación"],
    "Desarrollo Frontend": ["Diseño UI/UX"]
}
print(recuperar_historial_recursivo("Proyecto Final", historial))
Salida:
- Módulo Completado: Proyecto Final
  - Módulo Completado: Desarrollo Backend
    - Módulo Completado: Bases de Datos
    - Módulo Completado: Lógica de Programación
  - Módulo Completado: Desarrollo Frontend
    - Módulo Completado: Diseño UI/UX

Código fuente

def recuperar_historial_recursivo(modulo_actual, historial_completo, nivel=0):
    resultado = "  " * nivel + f"- Módulo Completado: {modulo_actual}\n"
    if modulo_actual in historial_completo:
        for sub_modulo in historial_completo[modulo_actual]:
            resultado += recuperar_historial_recursivo(sub_modulo, historial_completo, nivel + 1)
    return resultado
Esta función no tiene protección contra ciclos. Si historial_completo contiene una referencia circular — por ejemplo, "Módulo A" apunta a "Módulo B" y "Módulo B" apunta de vuelta a "Módulo A" — la recursión continuará indefinidamente hasta agotar el límite de la pila de Python y lanzar un RecursionError. Asegúrate de que el diccionario de dependencias sea un grafo acíclico dirigido (DAG) o, preferiblemente, un árbol estricto antes de pasarlo a esta función.

Build docs developers (and LLMs) love