Rather simple list/set operation [?]

Liste des GroupesRevenir à cl lisp 
Sujet : Rather simple list/set operation [?]
De : No_spamming (at) *nospam* noWhere_7073.org (B. Pym)
Groupes : comp.lang.lisp
Date : 07. Jun 2024, 09:56:53
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v3uefj$202pe$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6

From: Drew Krause
Subject: rather simple list/set operation
Date: Tue, 3 Jan 2012 19:01:19 -0600


Drew Krause wrote:

Maybe someone can help me with this?
 
I start with a list, e.g.
 
((0) (1 3) (1 2) (4 6) (5 7) (7 8))
 
 
and want all members of intersecting lists to appear in the same sublist:
 
=> ((0) (1 2 3) (4 6) (5 7 8))

Gauche Scheme:

(use srfi-1)  ; "lset-" functions
(use srfi-42) ; do-ec

(define (coalesce lists)
  (define accum '())
  (do-ec (:list x lists)
    (receive
      (miss hit)
      (partition (lambda (y) (null? (lset-intersection equal? x y)))
                 accum)
        (set! accum
          (cons (apply lset-union equal? x hit) miss))))
  accum)


(coalesce '((2 4)    (8 9) (4 5 8)))
  ===>
((2 9 4 5 8))

(coalesce '((2 4) (3 9) (5 6) (2 3)))
 ===>
((4 9 2 3) (5 6))

(coalesce '((0) (1 3) (1 2) (4 6) (5 7) (7 8)))
 ===>
((5 7 8) (4 6) (3 1 2) (0))

(coalesce '((2 4) (3 9) (5 6) (2 3) (55 66) (0) (66 6)))
 ===>
((5 55 66 6) (0) (4 9 2 3))

Date Sujet#  Auteur
7 Jun 24 * Rather simple list/set operation [?]7B. Pym
7 Jun 24 +* Re: Rather simple list/set operation [?]5Jeff Barnett
7 Jun 24 i+* Re: Rather simple list/set operation [?]3Jens Kallup
7 Jun 24 ii`* Re: Rather simple list/set operation [?]2Jeff Barnett
7 Jun 24 ii `- Re: Rather simple list/set operation [?]1Jens Kallup
8 Jun 24 i`- Re: Rather simple list/set operation [?]1Madhu
9 Jun 24 `- Re: Rather simple list/set operation [?]1HenHanna

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal