qijun0818 发表于 2018-5-10 23:13:30

高手们,请教一下表处理

如题:'((A B C) (B C) (A C) (B A C) (D E) (D) (A))的表合并成'((A B C) (D E))有办法实现吗?

kozmosovia 发表于 2018-5-11 13:03:19

先按照表长度排序,然后顺次去除较长的,遍历剩下的,如果元素全部在里面就删除。
之后重复操作

qijun0818 发表于 2018-5-10 23:14:07

如题 '((A B C) (B C) (A C) (B A C) (D E) (D) (A))的表合并成'((A B C) (D E))有办法实现吗?

13648893846 发表于 2018-5-11 05:56:23

去重,留下第一次出现的位置?

fl202 发表于 2018-5-11 11:38:02

没看出来具体的变化规律,((A E C) (B C) (A D) (B A C) (D E) (D) (A)) 这种表,楼主想出现什么结果?
你说明白了需要,别人才好帮你。

qijun0818 发表于 2018-5-11 11:49:09

fl202 发表于 2018-5-11 11:38
没看出来具体的变化规律,((A E C) (B C) (A D) (B A C) (D E) (D) (A)) 这种表,楼主想出现什么结果?
你 ...

比如'((1 2 3)(2 3)(3)(4 5 6)(4 6))-->>'((1 2 3)(4 5 6)) 表内出现有相同的元素都合并在一起

yxp 发表于 2018-5-11 13:22:36

本帖最后由 yxp 于 2018-5-11 13:23 编辑

qijun0818 发表于 2018-5-11 11:49
比如'((1 2 3)(2 3)(3)(4 5 6)(4 6))-->>'((1 2 3)(4 5 6)) 表内出现有相同的元素都合并在一起
(setq L '((1 2 3)(2 3)(3)(4 5 6)(4 6)))    试试: (test L)
(defun test(L / A)
(foreach x L (if (null (apply 'or (mapcar '(lambda(y)(apply 'and (mapcar '(lambda(z)(member z y)) x)))(vl-remove x L))))(setq A (cons x A))))A
)

qijun0818 发表于 2018-5-12 07:49:52

yxp 发表于 2018-5-11 13:22
(setq L '((1 2 3)(2 3)(3)(4 5 6)(4 6)))    试试:(test L)

非常感谢大神的帮助
页: [1]
查看完整版本: 高手们,请教一下表处理