找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: wowan1314

[研讨] 对于面域两两求交集的代码进行优化。

[复制链接]
 楼主| 发表于 2013-5-29 14:18:16 | 显示全部楼层
本帖最后由 wowan1314 于 2013-5-29 14:20 编辑
newer 发表于 2013-5-29 01:15
确实是把你的两层变一层了。

你还要做事啊,在一层里面,除非你什么都不做:)

我弄出来的怎么比原来的还复杂些了。
  1. ;;mapcar方法-----新
  2. ;;先变表 (1 2 3 4 5) ---> ((1 2 3 4 5)(2 3 4 5)(3 4 5)(4 5)(5))
  3. (SETQ AA (mapcar '(lambda(x)(cons x (cdr (member x REG-LST)))) REG-LST))
  4. (setq SS  (ssadd))
  5. (MAPCAR        '(lambda (A)
  6.            (SETQ Q (CAR A) AA1 (CDR A))
  7.            (MAPCAR '(lambda (B) (TT1 Q B) ) AA1)
  8.          )
  9.         AA
  10. )
  11. ;;mapcar方法-----旧
  12. ;|
  13. (setq SS  (ssadd) AA REG-LST AA1 AA)
  14. (MAPCAR        '(lambda (A)
  15.            (SETQ AA1 (CDR AA1))
  16.            (MAPCAR '(lambda (B) (TT1 A B) ) AA1)
  17.          )
  18.         AA
  19. )
  20. |;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-5-29 14:30:57 | 显示全部楼层
本帖最后由 newer 于 2013-5-29 14:36 编辑
wowan1314 发表于 2013-5-29 14:18
我弄出来的怎么比原来的还复杂些了。

建议你把每个表的处理的代码做一个函数里面,就清晰了。
处理的时候就不用MAPCAR了,用APPLY
对于其中的一个 pts1=(1 2 3 4 5),你要:
  1.   (apply 'func pts1)

  1. (defun func(x)
  2.    (setq e1 (car x) )  ;;源实体 1
  3.    (mapcar '(lambda(x)(func1 e1 x)) (cdr x))  ;;;(cdr x)  目标实体表 (2 3 4 5)
  4. )


因为对每个子表,你要处理的是第一个实体和其他所有实体的交、并、差等。
程序结构的代码要清晰,所有的效率问题已经转化为MAPCAR做了,其他为了增加程序的可读性和易维护性,多增加点代码不影响效率。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 14:47:31 | 显示全部楼层
newer 发表于 2013-5-29 14:30
建议你把每个表的处理的代码做一个函数里面,就清晰了。
处理的时候就不用MAPCAR了,用APPLY
对于其中 ...

嗯! 感谢指导

那样做程序确实有条理多了。 主要是可读和易维护。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 15:11:26 | 显示全部楼层
本帖最后由 wowan1314 于 2013-5-29 15:12 编辑

其实实际工作中此程序处理的样本个数不会太多。所以用那个函数循环效率都一样。影响速度的是面域的运算。

下面这个是尽量使用MAPCAR的版本.

T11.LSP

3.65 KB, 阅读权限: 20, 下载次数: 25, 下载积分: D豆 -1 , 活跃度 1

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-30 00:19:07 | 显示全部楼层
这种代码分析贴应该多出点,比大伙发源码好的多,再顶一次
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-11 19:49:57 | 显示全部楼层
这个帖子确实要好好研究研究
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2226个

财富等级: 金玉满堂

发表于 2014-3-1 21:09:55 | 显示全部楼层
{:soso_e179:}{:soso_e179:}{:soso_e179:}{:soso_e179:}{:soso_e179:}{:soso_e179:}{:soso_e179:}{:soso_e179:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2020-8-19 10:51:07 | 显示全部楼层
666666666555555555555555555
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-18 20:27 , Processed in 0.300956 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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