RosettaCodeData/Task/Order-disjoint-list-items/Common-Lisp/order-disjoint-list-items.lisp
2015-11-18 06:14:39 +00:00

8 lines
314 B
Common Lisp

(defun order-disjoint (data order)
(let ((order-b (make-hash-table :test 'equal)))
(loop :for n :in order :do (incf (gethash n order-b 0)))
(loop :for m :in data :collect
(cond ((< 0 (gethash m order-b 0))
(decf (gethash m order-b))
(pop order))
(t m)))))