simon8001 发表于 2013-5-31 15:12:08

将表按照一定的规则划分

本帖最后由 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还有可能是遇到其他相同的元素然后分段!
我的思路比较混乱,希望得到您的帮助!谢谢

Gu_xl 发表于 2013-5-31 17:03:10

(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)
)

zyhandw 发表于 2013-5-31 17:40:56

G版真是神速,不过运行后,分离出的第一个子表不是楼主要求的("a" "1""b" "3"),而是("1""b" "3")

simon8001 发表于 2013-5-31 21:17:20

那也要谢谢G版的帮助!这样我也有思路了!真的很谢谢

Gu_xl 发表于 2013-5-31 21:21:10

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"))

yoyoho 发表于 2013-6-1 08:58:38

感谢G版分享程序
测试O.K.

sicky111 发表于 2013-10-23 22:47:19

G版的程式测试没问题,支持G版。
页: [1]
查看完整版本: 将表按照一定的规则划分