パラメータとして2つのリストを取り、最初のリストのすべての要素が2番目に含まれているかどうかをチェックする関数を書きたい(要素の順序は関係ありません)。この関数は、2 つのリストが同じ長さ (2 つのリストに重複する要素を含めることはできません) かどうかもチェックします。そうでない場合、関数は nill/false を返すためです。
例: (ABCDEF) と (BEAFDC) は同じ要素を持ちます (nil) と (nil) は同じ要素を持ちます
(ABCDEF) と (ABCDEFG) は同じ要素を持っていません
問題は、私がいくつかの基本的なコマンドしか知らず、それらのコマンドしか使用できないことです。これらは、私が知っているほとんどすべてのコマンドです。
CAR, CDR, LENGTH, NULL, MEMBER, NOT, AND, OR, NOT, MAPCAR, APPLY, DO, SETQ, LET
私は今まで次の関数を書いていましたが、重複メンバーをチェックする方法がわからず、チェックしたいすべてのリストに対して適切に機能しません:
(defun same-elem-p (lst1 lst2)
(cond ((not (null lst1))
(cond ((member (car lst1) lst2)
(same-elem-p (cdr lst1) lst2))
(t nil)))
(t t)))
問題を十分に説明したことを願っています。