(setq lst (list '(1 2 3 4 5 6) '(1 2 3 4 5 6) '(1 2 3 4 5 6) '(2 2 3 4 5 6)))
;(uniquefuzz lst 1 )->((1 2 3 4 5 6) (2 2 3 4 5 6))
(defun uniquefuzz ( lst fuzz / a ll )
(while (setq a (car lst))
(if
(vl-some
(function (lambda ( x )
(equal x a fuzz)
))
(cdr lst)
)
(progn
(setq ll (cons a ll))
(setq lst
(vl-remove-if
(function (lambda ( x )
(equal x a fuzz)
))
(cdr lst)
)
)
)
(progn
(setq ll (cons a ll))
(setq lst (cdr lst))
)
)
)
(reverse ll)
)
; Snaps a number to the closest ones in the list (if the num is equally between 2 vals, then it returns list of both values)
;将;http://www.lee-mac.com/uniqueduplicate.html
;; Unique-p - Lee Mac
;; Returns T if the supplied list contains distinct items.
;;如果提供的列表包含不同的项,则返回T。
(defun LM:Unique-p ( l )
(vl-every (function (lambda ( x ) (not (member x (setq l (cdr l)))))) l)
)
_$ (LM:Unique-p '(1 2 3 4 5))
T
_$ (LM:Unique-p '(1 2 3 3 3 4 5))
nil
;; Unique with Fuzz - Lee Mac
;; Returns a list with all elements considered duplicate to
;;返回所有元素都被视为重复的列表
;; a given tolerance removed.
(defun LM:UniqueFuzz ( l f )
(if l
(cons (car l)
(LM:UniqueFuzz
(vl-remove-if
(function (lambda ( x ) (equal x (car l) f)))
(cdr l)
)
f
)
)
)
)
;; Unique with Fuzz - Lee Mac
;; Returns a list with all elements considered duplicate to
;; a given tolerance removed.
(defun LM:UniqueFuzz ( l f / x r )
(while l
(setq x (car l)
l (vl-remove-if (function (lambda ( y ) (equal x y f))) (cdr l))
r (cons x r)
)
)
(reverse r)
)
;; Unique-p with Fuzz - Lee Mac
;; Returns T if a list contains items considered distinct to
;; a given tolerance
(defun LM:UniqueFuzz-p ( l f )
(or (null l)
(and (not (vl-some (function (lambda ( x ) (equal x (car l) f))) (cdr l)))
(LM:UniqueFuzz-p (cdr l) f)
)
)
)
;; Unique-p with Fuzz - Lee Mac
;; Returns T if a list contains items considered distinct to
;; a given tolerance
(defun LM:UniqueFuzz-p ( l f )
(vl-every
(function
(lambda ( x )
(not
(vl-some
(function
(lambda ( y ) (equal x y f))
)
(setq l (cdr l))
)
)
)
)
l
)
)