Soy nuevo en Common Lisp y en la programación funcional, pero tengo mucha experiencia en lenguajes como C, C++, C#, Java, etc. Tengo problemas para encontrar la lista más anidada dentro de una lista. Mi entrada es algo como esto:Encuentra la lista más anidada dentro de una lista en Common Lisp
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
me gustaría obtener la lista más anidada dentro de esta lista, que en este caso es
(7)
Yo tenía una idea de que podía aplanar la lista de alguna manera , hasta que solo quedaba una sub-lista. Para ilustrar lo que quiero decir, aquí hay un par de pasos:
Paso 1. - Entrada:
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
Paso 2. - aplanar el "primer nivel":
(0 1 2 3 4 5 (6 (7) 8) 9)
el paso 3. - aplanar el "segundo nivel":
(0 1 2 3 4 5 6 (7) 8 9)
Ahora sólo hay una lista anidada a la izquierda, lo que significa que fue la lista más anidada. Pero veo un problema aquí, cuando dos o más de esas listas ocurrirían. Por favor comparte tus pensamientos sobre esto.
Tengo problemas para hacer que este procedimiento se vuelva realidad en Common Lisp, así que agradeceré algunos consejos en la dirección correcta, tal vez algún código de ejemplo, y así sucesivamente. Esta es una tarea para el hogar, por lo que realmente no espero una solución completa, pero estaría contento si alguien señalara quizás una solución más fácil y mejor y su implementación.
Es un problema interesante.Creo que lo que haría sería un recorrido DFS, y registrar el par (hoja, hoja-profundidad) en una lista, luego buscar en la pila la hoja con la profundidad máxima. –