Jestem nowy w Common Lisp i programowania funkcjonalnego, ale mam duże doświadczenie w językach takich jak C, C++, C#, Java i tak dalej. Mam problem ze znalezieniem najbardziej zagnieżdżonej listy na liście. Mój wkład jest mniej więcej tak:Znajdź najbardziej zagnieżdżoną listę na liście w Common Lisp
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
Chciałbym uzyskać listę najbardziej zagnieżdżony wewnątrz tej liście, która w tym przypadku jest
(7)
miałem pojęcia, że mogę wyprostować listę jakoś , dopóki nie pozostała tylko jedna podlista. Aby zilustrować, co mam na myśli, tutaj jest kilka kroków:
Krok 1. - wejście:
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
Krok 2. - spłaszczyć na "pierwszego poziomu":
(0 1 2 3 4 5 (6 (7) 8) 9)
kroku 3. - spłaszczyć na „drugiego poziomu”:
(0 1 2 3 4 5 6 (7) 8 9)
teraz istnieje tylko jedna lista zagnieżdżona w lewo, co oznacza, że była lista najbardziej zagnieżdżonych. Ale widzę tu problem, gdy wystąpią dwie lub więcej takich list. Proszę podziel się swoimi przemyśleniami na ten temat.
Mam problemy z wprowadzeniem tej procedury w życie w Common Lisp, więc byłbym wdzięczny za kilka wskazówek we właściwym kierunku, może jakiś przykładowy kod i tak dalej. Jest to zadanie domowe, więc nie oczekuję pełnego rozwiązania, ale byłbym zadowolony, gdyby ktoś wskazał być może łatwiejsze i lepsze rozwiązanie oraz jego wdrożenie.
Rodzaj interesującego problemu.Myślę, że to, co zrobiłbym, to przejście przez DFS i zapisanie pary (liści, głębokości liści) na liście, a następnie przeszukanie stosu dla liścia o maksymalnej głębokości. –