Найдите самый вложенный список внутри списка в Common Lisp

Я новичок в Common Lisp и функциональном программировании, но у меня большой опыт работы с такими языками, как C, C ++, C #, Java и так далее. Мне не удается найти самый вложенный список внутри списка. Я ввел что-то вроде этого:

(0 1 (2 3) 4 (5 (6 (7) 8)) 9)

Я хотел бы получить наиболее вложенный список внутри этого списка, который в данном случае равен

(7)

. У меня была идея, что я мог бы каким-то образом сгладить список, пока не останется только один под- список оставлен. Чтобы проиллюстрировать, что я имею в виду, вот несколько шагов:

Шаг 1. - ввод:

(0 1 (2 3) 4 (5 (6 (7) 8)) 9)

Шаг 2. - развернуть " Но я вижу здесь проблему, когда может появиться два или более таких списка. Пожалуйста, поделитесь своими мыслями по этому поводу.

У меня проблемы с реализацией этой процедуры в Common Lisp, поэтому я был бы благодарен за некоторые указатели в правильном направлении, возможно, за какой-нибудь пример кода и так далее. Это домашнее задание, поэтому я не жду полного решения, но был бы рад, если бы кто-нибудь указал, возможно, более простое и лучшее решение и его реализацию.

6
задан Bill the Lizard 21 September 2012 в 17:22
поделиться