高手们,请教一下表处理
如题:'((A B C) (B C) (A C) (B A C) (D E) (D) (A))的表合并成'((A B C) (D E))有办法实现吗? 先按照表长度排序,然后顺次去除较长的,遍历剩下的,如果元素全部在里面就删除。之后重复操作 如题 '((A B C) (B C) (A C) (B A C) (D E) (D) (A))的表合并成'((A B C) (D E))有办法实现吗? 去重,留下第一次出现的位置? 没看出来具体的变化规律,((A E C) (B C) (A D) (B A C) (D E) (D) (A)) 这种表,楼主想出现什么结果?
你说明白了需要,别人才好帮你。 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: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
) yxp 发表于 2018-5-11 13:22
(setq L '((1 2 3)(2 3)(3)(4 5 6)(4 6))) 试试:(test L)
非常感谢大神的帮助
页:
[1]