Re: Faster remove-duplicates with sorted list.

Liste des GroupesRevenir à cl lisp 
Sujet : Re: Faster remove-duplicates with sorted list.
De : No_spamming (at) *nospam* noWhere_7073.org (B. Pym)
Groupes : comp.lang.lisp
Date : 19. Jun 2024, 17:18:17
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v4usrm$21fur$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
I believe that remove-duplicates has to assume that the list is not
sorted. Therefore it has to compare each element, element by element
( ~N^2 ). Whereas a side by side goes like 2*N.
>
The only problem I have is excessive consing which significantly slows
down the algorithm.
 
(defun uniquify-sorted-list (list &key (key #'identity) (test #'eql))
  (loop for element in list
        for element-key = (funcall key element)
        for last-element-key = (load-time-value (gensym))
        then element-key
        unless (funcall test element-key last-element-key)
        collect element))

Gauche Scheme

(use srfi-1)  ;; pair-fold

(pair-fold
  (lambda (xs accum)
    (if (and (pair? (cdr xs)) (apply equal? (take xs 2)))
      accum
      (cons (car xs) accum)))
  '()
  '(0 0 1 2 3 3 3 4 5 5))

  ===>
(5 4 3 2 1 0)


(pair-fold
  (lambda (xs accum)
    (if (and (pair? (cdr xs)) (apply equal? (take xs 2)))
      accum
      (cons (car xs) accum)))
  '()
  '(0 1 2 3 3 3 4 5))

  ===>
(5 4 3 2 1 0)

Date Sujet#  Auteur
19 Jun 24 * Re: Faster remove-duplicates with sorted list.5B. Pym
19 Jun 24 `* Re: Faster remove-duplicates with sorted list.4B. Pym
21 Jun 24  `* Re: Faster remove-duplicates with sorted list.3Joerg Mertens
21 Jun 24   +- Re: Faster remove-duplicates with sorted list.1Joerg Mertens
10 Aug 24   `- Re: Faster remove-duplicates with sorted list.1steve g

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal