(defun div ( d l / m r )
(foreach x l
(if (= x d)
(if m (setq r (cons (reverse m) r) m nil))
(setq m (cons x m))
)
)
(reverse (if m (cons (reverse m) r) r))
)
_$ (div "sep" '("a" "b" "c" "sep" "d" "e" "f"))
(("a" "b" "c") ("d" "e" "f")) 另一种递归解决方案:
(defun div ( d l / r )
(cond
( (= (car l) d) (div d (cdr l)))
( (setq l (vl-member-if '(lambda ( x ) (setq r (cons x r)) (= x d)) l))
(cons (reverse (cdr r)) (div d (cdr l)))
)
( r (list (reverse r)))
)
) 我的版本
(defun div ( d l / m r )
(foreach x l
(if (wcmatch x (strcat d "*"))
(if m (setq r (cons (reverse m) r) m nil))
(setq m (cons x m))
)
)
(reverse (if m (cons (reverse m) r) r))
)
19
我看到你在第一次之后还要求了别的东西!无论如何,只要在我的上一个程序中用wcmatch函数替换/=即可,正如在上面的引号中修改的那样。
页:
1
[2]