;; gc:intersect
;; Retourne la liste des éléments communs à l1 et l2
;;
;; Arguments
;; l1 : une liste
;; l2 : une liste
(defun GC:INTERSECT (l1 l2)
(if l1
(if (member (car l1) l2)
(cons (car l1) (gc:intersect (cdr l1) l2))
(gc:intersect (cdr l1) l2))))
(defun unique ( l )
(if l
(cons (car l)
(unique (vl-remove (car l) l))
)
)
)
;; gc:intersect
;; Retourne la liste des éléments communs à l1 et l2
;;
;; Arguments
;; l1 : une liste
;; l2 : une liste
(defun GC:INTERSECT (l1 l2)
(if l1
(if (member (car l1) l2)
(cons (car l1) (gc:intersect (cdr l1) l2))
(gc:intersect (cdr l1) l2))))
(unique (GC:INTERSECT '(3 3 2) '(7 3 2)))
(defun GC: INTERSECT (l1 l2 / ec)
(if l1
(if (member (setq and c (car l1)) l2)
(progn (setq l2 (GC: REMOVEFIRST and c l2))
(cons ec (GC: INTERSECT (cdr l1) l2)))
(GC: INTERSECT (cdr l1) l2))))
(defun GC:REMOVEFIRST (ele lst)
(if (equal ele (car lst))
(cdr lst)
(cons (car lst) (GC:REMOVEFIRST ele (cdr lst)))))
(GC: INTERSECT '(3 3 3 3 2)' (3 3 7 2)) -> (3 3 2)