试试看,是否你要的 - (setq lst '(5 6 7 7.5 8.5 9.3 8.2 6.7 4.5 3.3))
- (test lst)
- (defun test(lst / n lst1 m s sa sb sc)
- (defun lst_sort(lst fun);表从小到大排序
- (mapcar 'cdr (vl-sort (mapcar '(lambda(x) (cons 1 x)) lst) fun))
- )
- (setq n (length lst))
- (cond ((= (rem n 3) 0))
- ((= (rem n 3) 1) (setq lst (cons 0 (cons 0 lst))))
- ((= (rem n 3) 2) (setq lst (cons 0 lst)))
- )
- (setq lst1 (lst_sort lst '(lambda(e1 e2) (> (cdr e1) (cdr e2)))) m (length lst1))
- (setq s (list (cons 1 0) (cons 2 0) (cons 3 0)))
- (repeat (/ m 3)
- (setq SA (car lst1) SB (cadr lst1) SC (caddr lst1) lst1 (cdddr lst1))
- (setq s (vl-sort s '(lambda(e1 e2) (< (cdr e1) (cdr e2)))))
- (setq s (mapcar '(lambda(x y) (setq y (cons (car y) (+ x (cdr y))))) (list sa sb sc) s))
- )
- (setq s (vl-sort s '(lambda(e1 e2) (< (car e1) (car e2)))))
- (princ (strcat "\nA=" (rtos (cdar s))))
- (princ (strcat "\nB=" (rtos (cdadr s))))
- (princ (strcat "\nC=" (rtos (cdar (cddr s)))))
- )
|