Ich bin neu in Common Lisp und funktionale Programmierung, aber ich habe eine Menge Erfahrung in Sprachen wie C, C++, C#, Java und so weiter. Ich habe Probleme, die verschachtelte Liste in einer Liste zu finden. Mein Eingang ist so etwas wie diese:Finden Sie die meisten geschachtelten Liste in einer Liste in Common Lisp
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
Ich mag die meisten verschachtelte Liste innerhalb dieser Liste erhalten, die in diesem Fall ist
(7)
Ich habe hatte eine Idee, die ich irgendwie die Liste abflachen könnte , bis nur noch eine Unterliste übrig war. Um zu zeigen, was ich meine, hier ist ein paar Schritte:
Schritt 1 - Eingang:
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
Schritt 2. - flach auf "first level":
(0 1 2 3 4 5 (6 (7) 8) 9)
Schritt 3. - flach auf „zweiten Ebene“:
(0 1 2 3 4 5 6 (7) 8 9)
Jetzt ist es nur eine verschachtelte Liste links, was bedeutet, dass die verschachtelte Liste war. Aber ich sehe hier ein Problem, wenn zwei oder mehr solcher Listen auftreten würden. Bitte teile deine Gedanken dazu.
Ich habe Probleme, dieses Verfahren in Common Lisp in die Realität umzusetzen, also wäre ich dankbar für einige Hinweise in die richtige Richtung, vielleicht ein Beispielcode und so weiter. Dies ist eine Hausaufgabe, daher erwarte ich nicht wirklich eine vollständige Lösung, würde mich aber freuen, wenn jemand auf eine einfachere und bessere Lösung und deren Umsetzung hinweist.
Ein bisschen ein interessantes Problem.Ich denke, was ich tun würde, wäre ein DFS-Traversal, und notiere das Paar (Blatt, Blatttiefe) in einer Liste und suche dann den Stapel nach dem Blatt mit der maximalen Tiefe. –