- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
(defun question-2 ()
(let ((b '(1 2 3))
(a '(1 2 3 4))
(com (make-hash-table :test #'equal)))
(labels ((put-sorted (x)
(let ((key
(sort
(flatten
(copy-tree x)) #'<)))
(if (gethash key com)
(incf (gethash key com))
(setf (gethash key com) 1)))))
(values (remove-if
#'(lambda (x)
(prog ((results
(do ((x x (cdr x)) (r))
(nil)
(setf r (append (cadar x) r))
(when (null (cdr x))
(return r)))))
(dolist (y a)
(when (not (member y results))
(go remove-it)))
(put-sorted results)
(go keep-it)
remove-it (return t)
keep-it nil))
(all-functions b (cartesian-product a))) com))))
Follow us!