Common Lisp と関数型プログラミングは初めてですが、C、C++、C#、Java などの言語の経験は豊富です。リスト内で最もネストされたリストを見つけるのに苦労しています。私の入力は次のようなものです:
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
このリスト内で最もネストされたリストを取得したいのですが、この場合は
(7)
サブリストが 1 つだけになるまで、どうにかしてリストを平坦化できるという考えがありました。私が言いたいことを説明するために、ここにいくつかのステップがあります:
ステップ 1. - 入力:
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
ステップ 2. - 「第 1 レベル」で平坦化:
(0 1 2 3 4 5 (6 (7) 8) 9)
ステップ 3. - 「第 2 レベル」で平坦化:
(0 1 2 3 4 5 6 (7) 8 9)
これで、ネストされたリストが 1 つだけ残っています。これは、それが最もネストされたリストであることを意味します。しかし、このようなリストが 2 つ以上発生する場合、ここで問題が発生します。これについてあなたの考えを共有してください。
Common Lisp でこの手順を実現するのに問題があるので、正しい方向へのポインタ、サンプル コードなどを教えていただければ幸いです。これは宿題なので、完全な解決策は期待していませんが、誰かがおそらくより簡単でより良い解決策とその実装を指摘してくれるとうれしいです.