Aller au contenu

Messages recommandés

Posté(e)

Bonjour à Toutes et à Tous,

 

Soit la liste suivante, contenant des chaines avec des doublons, triplons, et plus :

 

("Nom BLOC" "123" "ABC" "BBB" "123" "AAA" "BBB" "123" "BBB" "123" "ABC" "789" "123")

 

Existe-t-il une fonction LISP ou VLISP toute prête, pour faire le CUMUL ou faut-il passer par une boucle qui va traiter la liste élément par élément ? qui donnerait par exemple ce résultat sous forme de paire pointée et le TOTAL ?

 

( ( "Nom BLOC" . 1 ) ("123" . 5) ("BBB" . 3) ("AAA" . 1) ("ABC" . 2) ("789" . 1) )

 

Je vous remercie

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Salut

 

(setq tbl '("Nom BLOC" "123" "ABC" "BBB" "123" "AAA" "BBB" "123" "BBB" "123" "ABC" "789" "123"))
(while tbl    
 (setq n   (length tbl)
js  (car tbl)
tbl (vl-remove js tbl)
lst (cons (cons js (- n (length tbl))) lst)
 )
)

 

(reverse lst) --> (("Nom BLOC" . 1) ("123" . 5) ("ABC" . 2) ("BBB" . 3) ("AAA" . 1) ("789" . 1))

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut,

 

Un exemple de fonction LISP (defun)

 

(defun groupItems (lst / pair result)
 (foreach item	lst
   (setq result
   (if (setq pair (assoc item result))
     (subst (cons item (1+ (cdr pair))) pair result)
     (cons (cons item 1) result)
   )
   )
 )
 (reverse result)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité