(defun run (lst) (let ((flist nil) (contador 1) (valor (first lst))) (dolist (x (rest lst)) (cond ((eq valor x) (incf contador) (print valor)) ((= contador 1) (setf flist (append flist (list valor))) (setf valor x) (setf contador 1) (print valor)) (t (setf flist (append flist (list (list valor contador)))) (setf valor x) (setf contador 1)))) ; falta adicionar o ultimo... (if (= contador 1) (setf flist (append flist (list valor))) (setf flist (append flist (list (list valor contador))))) (print flist))) (run '(A A A A B C C A A A A D))