我遇到此功能的问题two-similar-p
。列表之间的两个常见元素
(defun two-similar-p (list1 list2)
(mapcar
(lambda (e)
(mapcar
(lambda (e1)
(if (equal e e1) t))
list2))
list1))
但不正确的使用mapcar
,因为这个函数返回T
或NIL
一个新的列表,但我只需要返回一个true或false。
ex。
(two-similar-p '(2 1 3) '(1 2 3))
==> ((NIL T NIL) (T NIL NIL) (NIL NIL T))
我想用递归来比较不同的元素,但我不知道该怎么做。 我的功能需要像这样工作:
(two-similar-p '(1 2 3) '(1 4 5)) ; ==> nil
(two-similar-p '(1 2 5) '(1 4 5)) ; ==> t
(two-similar-p '(1 2 6) '(6 4 2)) ; ==> t
有什么建议吗?
为什么第一个例子返回'nil'? – melpomene
ops,对不起,第一个例子返回nil,因为它们没有至少两个相等的元素。 –
你需要使用'mapcar'吗? – sds