将表按照一定的规则划分
本帖最后由 Gu_xl 于 2013-5-31 21:34 编辑举例说明一下例如有个表a("a" "1""b" "3""a" "2""c" "4""a" "15""5" "6""7" "34""a" "9""11" "bb""d" "n""m" "mm")划分为表
("a" "1""b" "3")("a" "2""c" "4")("a" "15""5" "6""7" "34")("a" "9""11" "bb""d" "n""m" "mm")
有什么好的思路吗?当然不一定是遇到a还有可能是遇到其他相同的元素然后分段!
我的思路比较混乱,希望得到您的帮助!谢谢
(defun f (l a / c)
(while l
(if (= a (car l))
(progn
(if b
(setq c (cons (reverse b) c)
b nil
)
)
(setq b (cons (car l) b)
l (cdr l)
)
(while (and l
(/= a (car l))
)
(setq b (cons (car l) b)
l (cdr l)
)
)
(setq c (cons (reverse b) c)
b nil
)
)
(progn
(setq b (cons (car l) b)
l (cdr l)
)
)
)
)
(if b
(setq c (cons (reverse b) c)
b nil
)
)
(reverse c)
) G版真是神速,不过运行后,分离出的第一个子表不是楼主要求的("a" "1""b" "3"),而是("1""b" "3") 那也要谢谢G版的帮助!这样我也有思路了!真的很谢谢 zyhandw 发表于 2013-5-31 17:40 static/image/common/back.gif
G版真是神速,不过运行后,分离出的第一个子表不是楼主要求的("a" "1""b" "3"),而是("1""b" "3")
怎么不对?
(f '("a" "1""b" "3""a" "2""c" "4""a" "15""5" "6""7" "34""a" "9""11" "bb""d" "n""m" "mm") "a")
==》
(("a" "1" "b" "3") ("a" "2" "c" "4") ("a" "15" "5" "6" "7" "34") ("a" "9" "11" "bb" "d" "n" "m" "mm")) 感谢G版分享程序
测试O.K. G版的程式测试没问题,支持G版。
页:
[1]