Tengo dos listas sin clasificar y necesito producir otra lista que esté ordenada y donde todos los elementos sean únicos.Necesito unir dos listas, ordenarlas y eliminar duplicados. ¿Hay una mejor manera de hacer esto?
Los elementos pueden aparecer varias veces en ambas listas y no están ordenados originalmente.
Mi función es el siguiente:
(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))))
¿Hay una mejor manera de lograr lo mismo?
llamada de la muestra:
[CL]> (merge-lists '(9 8 4 8 9 7 2) '(1 7 3 9 2 6) #'>)
==> (9 8 7 6 4 3 2 1)
Es posible que desee aclarar lo que quiere decir con "mejor". – mweerden
¿Has probado el fragmento no probado y funcionó? Me encantaría editar mi respuesta para que las generaciones posteriores a nosotros no tengan que vivir con el temor de que el fragmento de su Lisp 3000 ... –
Lo haya probado y realmente haya funcionado. Muchas gracias por la respuesta. – dsm