明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1972|回复: 10

[已解答] 问个小白问题 表内元素交集

[复制链接]
发表于 2016-3-11 16:26:56 | 显示全部楼层 |阅读模式

表1为:   (1 2 3 4 5 )
表2为:   ( 2 3 4 5 6)
表3为:   ( 3 4 5 6 7)
表4为:   (4 5 6 7 8)

要求返回  所有表都有的元素    (4 5)

这程序应该怎么写
LISP放下一年   忘得差不多了
谢谢大师们提点一下

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-3-11 16:37:30 | 显示全部楼层
(defun f (l / a l1)
  (setq        l1 (car l)
        l  (cdr l)
  )
  (while l
    (setq a (car l)
          l (cdr l)
          c nil
    )
    (foreach b l1
      (if (member b a)
        (setq c (cons b c))
      )
    )
    (setq l1 c)
  )
  (reverse l1)
)

_$ (f '((1 2 3 4 5)(2 3 4 5 6)(3 4 5 6 7)(4 5 6 7 8)))
(4 5)
_$
 楼主| 发表于 2016-3-11 19:40:06 | 显示全部楼层
Gu_xl 发表于 2016-3-11 16:37
(defun f (l / a l1)
  (setq        l1 (car l)
        l  (cdr l)

谢谢固版主。。。都帮我写好了。。
谢谢了。。
发表于 2016-3-11 22:59:00 | 显示全部楼层
另方: 串成一列 个数小于4的剔除
发表于 2016-3-12 13:04:01 | 显示全部楼层
  1. (setq lst '((1 2 3 4 5)
  2.             (2 3 4 5 6)
  3.             (3 4 5 6 7)
  4.             (4 5 6 7 8)
  5.            )
  6. )
  7. ;; (aaa lst)
  8. (defun aaa (lst / l1)
  9.   (setq l1 (car lst))
  10.   (foreach a lst (setq l1 (vl-remove-if-not '(lambda (x) (member x a)) l1)))
  11. )
 楼主| 发表于 2016-3-12 14:37:24 | 显示全部楼层
xyp1964 发表于 2016-3-12 13:04

谢谢帮助~~~~~~~~~~~支持大师
 楼主| 发表于 2016-3-12 14:38:29 | 显示全部楼层
Andyhon 发表于 2016-3-11 22:59
另方: 串成一列 个数小于4的剔除

好办法。。但表内可能出现  4个元素与12个元素
发表于 2016-3-12 16:43:50 | 显示全部楼层
4 化成变量即得
但得关心下效率的问题
发表于 2016-3-17 09:46:34 | 显示全部楼层
本帖最后由 llsheng_73 于 2016-3-17 10:05 编辑

  1. (defun f(l / a)
  2.   (setq a(car l))
  3.   (foreach x(cdr l)(setq a(vl-remove-if-not'(lambda(y)(member y x))a))))

写完了才发现跟院长的一样
发表于 2016-3-17 15:39:26 | 显示全部楼层
本帖最后由 highflybird 于 2016-3-17 15:40 编辑

  1. (defun Intersect (lst / x l)
  2.   (setq l (car lst))
  3.   (foreach p (cdr lst)
  4.     (setq x nil)
  5.     (foreach n p
  6.       (if (member n l)
  7.         (setq x (cons n x))
  8.       )
  9.     )
  10.     (setq l x)
  11.   )
  12.   x
  13. )

这样可能效率高些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 20:58 , Processed in 0.204199 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表