Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun seq-intersect-p (seq1 seq2 &rest sequences)
- "Determine if the intersection of SEQ1, SEQ2 and SEQUENCES is non-nil."
- (cl-do* ((sequences `(,seq1 ,seq2 ,@sequences) (cdr sequences))
- (seq (car sequences) (car sequences))
- (elements (make-hash-table :test #'equal))
- (intersect-p nil))
- ((or (seq-empty-p sequences)) intersect-p)
- (cl-do* ((seq seq (cdr seq))
- (element (car seq) (car seq)))
- ((or intersect-p (seq-empty-p seq)) intersect-p)
- (if (ht-get elements element)
- (setf intersect-p t)
- (ht-set elements element t)))))
- (defun test-seq-intersect-p ()
- "Test cases."
- (cl-assert (null (seq-intersect-p '()
- '())))
- (cl-assert (null (seq-intersect-p '(1)
- '())))
- (cl-assert (null (seq-intersect-p '(1 2)
- '(3 4)
- '(5 6))))
- (cl-assert (seq-intersect-p '(1 2)
- '(3 4)
- '(5 6)
- '(1)))
- t)
- (test-seq-intersect-p)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement