fan_zh 发表于 2015-7-28 15:47:08

自己解决了

i小小白i 发表于 2023-6-30 12:31:57

我也在找相关代码,你有答案可以分享一下吗

smile0421 发表于 2023-6-30 16:06:40

(defun c:tt (/ lst num len lst1 lst2 lst3)
        (setq lst '(1.2 1.5 2.3 2.6 2.6 3.3 3.5 4.1 4.2)
                num 0               
                len 5lst3 nil
        )
        (setq lst (vl-sort lst '(lambda (x y) (> x y)))
                lst (mapcar
                                        '(lambda (x)
                                               (cons x (setq num (1+ num)))
                                       )
                                        lst
                                )
                num 0
        )
        (while lst
                (setq dis 0
                        i -1 lst1 nil lst2 nil
                )
                (while (and
                                               (< dis len)
                                               (< i (1- (length lst)))
                                               (setq int (nth (setq i (1+ i)) lst))
                                       )                       
                        (if (<= (+ dis (car int)) len)
                                (progn
                                        (setq dis (+ dis (car int)))
                                        (setq lst2 (cons int lst2)
                                                lst1 (cons (car int) lst1)
                                        )
                                )                                       
                        )
                )
                (foreach x lst2
                        (setq lst (vl-remove x lst))
                )
                (setq lst3 (cons lst1 lst3))
                (setq num (1+ num))
        )
        (reverse lst3)
)
页: 1 [2]
查看完整版本: 求教用lisp 进行简单的一维条材套料的算法