Я новичок в 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. - выравнивание на «первом уровне»:
(0 1 2 3 4 5 (6 (7) 8) 9)
Шаг 3. - выравнивание на «втором уровне»:
(0 1 2 3 4 5 6 (7) 8 9)
Теперь остался только один вложенный список, что означает, что это был самый вложенный список.Но я вижу здесь проблему, когда появятся два или более таких списков.Пожалуйста, поделитесь своими мыслями по этому поводу.
У меня проблемы с реализацией этой процедуры в Common Lisp, поэтому я был бы благодарен за некоторые указатели в правильном направлении, например за пример кода и так далее.Это домашнее задание, поэтому я не ожидаю полного решения, но был бы рад, если бы кто-то указал, возможно, более простое и лучшее решение и его реализацию.