- (defun FindNextSubList (Pn Lst)
- (if Lst
- (if (= (car (car Lst)) Pn)
- (cons (car Lst) (FindNextSubList (cadr (car Lst)) (cdr Lst)))
- (FindNextSubList Pn (cdr Lst))
- )
- )
- )
- (defun AddTorNil (NLst MLst)
- (if NLst
- (if (member (cadr (car NLst)) (mapcar 'car MLst))
- (if (member (cadr (car NLst)) (cdr (member (cadr (car NLst)) (mapcar 'car MLst))))
- (cons (append (car NLst) '(T)) (AddTorNil (cdr NLst) MLst))
- (cons (append (car NLst) '(nil)) (AddTorNil (cdr NLst) MLst))
- )
- (cons (append (car NLst) '(nil)) (AddTorNil (cdr NLst) MLst))
- )
- )
- )
- (defun RemoveIsNilLast (NLst MLst)
- (if (and NLst MLst)
- (if (not (caddr (car NLst)))
- (RemoveIsNilLast (cdr NLst) (vl-remove (list (car (car NLst)) (cadr (car NLst))) MLst))
- MLst
- )
- MLst
- )
- )
- (defun func (Lst0 / Lst1 Lst2 Lst3 Lst4 ReLst)
- (setq Lst3 Lst0
- Lst2 '((T T T))
- ReLst nil
- )
- (while (member 'T (mapcar 'caddr Lst2))
- (setq Lst1 (cons (car Lst3) (FindNextSubList (cadr (car Lst3)) (cdr Lst3)))
- Lst4 (cons (car (car Lst1)) (mapcar 'cadr Lst1))
- ReLst (cons Lst4 ReLst)
- Lst2 (reverse (AddTorNil Lst1 Lst3))
- Lst3 (RemoveIsNilLast Lst2 Lst3)
- )
- )
- (reverse ReLst)
- )
也不知道行不行 |