У меня есть два несортированных списка, и мне нужно создать другой список, который отсортирован и в котором все элементы уникальны.
Элементы могут встречаться несколько раз в обоих списках, и они изначально не отсортированы.
Моя функция выглядит так:
(defun merge-lists (list-a list-b sort-fn)
"Merges two lists of (x, y) coordinates sorting them and removing dupes"
(let ((prev nil))
(remove-if
(lambda (point)
(let ((ret-val (equal point prev)))
(setf prev point)
ret-val))
(sort
(merge 'list list-a list-b sort-fn) ;'
sort-fn))))
Есть ли лучший способ добиться того же?
Пример звонка:
[CL]> (merge-lists '(9 8 4 8 9 7 2) '(1 7 3 9 2 6) #'>)
==> (9 8 7 6 4 3 2 1)