![]() |
[求助]相邻且相同的元素合成表
[求助]相邻且相同的元素合成表
www.dimcax.com [求助]相邻且相同的元素合成表 请教,怎么做到: 相邻且相同的元素合成一表, 而后再形成一大表,如: (0 1 1 1 2 3 3 4 4 5) ->((0) (1 1 1) (2) (3 3) (4 4) (5)) 思绪很乱,实在想不出。特此求助 d (setq lst1 '(0 1 1 1 2 3 3 4 4 5)) (setq lst2 '() lst '() i 0) (repeat (length lst1) (if (= (nth i lst1)(nth (1+ i) lst1)) (setq lst (cons (nth i lst1) lst)) (setq lst2 (append lst2 (list (cons (nth i lst1) lst))) lst '()) ) (setq i (1+ i)) ) 应该可以改进的 原创加密lisp真正的破解.原创lisp操作cad内置对话框.原创lisp直接调用win32 api.原创lisp开发小助手(代码自动生成器).原创vba语句->lisp语句解释器.原创lisp音乐播放器.原创lisp直接使用vba对话框. (defun test (lst / i a b lst3 lst2) (repeat (setq i (length lst)) (setq i (1- i) a (nth i lst) ) (if (and (/= a b) lst2) (setq lst3 (cons lst2 lst3) lst2 nil ) ) (if (member a lst2) (setq lst2 (cons a lst2)) (setq lst2 (list a)) ) (setq b a) ) lst3 ) d 谢谢 nonsmall 谢谢 caoyin 太感谢两位了 d (setq lst1 '(0 1 1 1 2 3 3 4 4 5) lst2 nil) (mapcar '(lambda (x) (if (= x (last (last lst2))) (setq lst2 (subst (cons x (last lst2)) (last lst2) lst2)) (setq lst2 (append lst2 (list (list x)))))) lst1) lst2 原创加密lisp真正的破解.原创lisp操作cad内置对话框.原创lisp直接调用win32 api.原创lisp开发小助手(代码自动生成器).原创vba语句->lisp语句解释器.原创lisp音乐播放器.原创lisp直接使用vba对话框. 最长的一个: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ;;;============================================== ;;;功能:将相邻的内容相同的原子组成表 ;;;测试: (test '(1 1 1 2 2 3 )) ;;; ==>> '((1 1 1)(2 2)(3)) ( test (lst) ( (( lst nil) nil ) (( ( lst) 1) ( lst) ) ( ( (tt-01 lst) (test (tt-02 lst)) ) ) ) ) ;;;功能:返回与表中第一个原子相同的连续的表 ;;;测试: (tt-01 '(1 1 1 2 2 3 )) ;;; ==>> '(1 1 1) ( tt-01 (lst) ( (( lst nil) nil ) (( ( lst) 1) lst ) (( ( lst) ( lst)) ( ( ( lst)) (tt-01 ( lst))) ) ( ( ( lst))) ) ) ;;;功能:与首个原子不同的原子开始,剩余的表内容 ;;;测试: (tt-02 '(1 1 1 2 2 3 )) ;;; ==>> '(2 2 3) ( tt-02 (lst) ( (( ( lst) 1) nil ) (( ( lst) ( lst)) (tt-02 ( lst)) ) ( ( lst)) ) ) 好好学习cad,天天向上搞设计。 ://zml84.blog.sohu.com |
所有的时间均为北京时间。 现在的时间是 04:29 PM. |