1

私はリストを持っています

(SetQ L '(1 j 3 k 4 h 5 n 6 w))

エントリに「n」個のアトムを持つリストを持つ関数 Order を実行する必要があります。そのリストの各アトムがリスト L に含まれているかどうかを確認し、アトムが含まれていない場合は、リスト L で指定された順序に従って並べ替える必要があります。リストLの一部、結果が表示されます

(Defun Order lst)

(SetQ L2'(w o 5 j 3))

これを確認したい:

(Order L2)

結果は次のようになります。

(J 3 5 W)
4

1 に答える 1

3

ヒント:

以前、あなたはこの質問をしました:

CLISP : 2 つの要素がリスト内で順番に並べられているかどうかを確認します

この関数は、標準 Lisp 関数の呼び出しで比較関数として使用できるため、問題に関連していますsort

Lisp 関数intersectionは、あるリストの要素のうち別のリストに現れる要素だけを含むリストを生成できます。これはセット操作であるため、重複をつぶす可能性があります。別の方法は、テスト述語が「他のリストのメンバーではないこのリストのすべての要素を削除する」という考えを表現するためremove-if-notに使用するラムダ関数である場合に使用することです。member

于 2012-04-26T16:26:42.030 に答える