明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: llsheng_73

[讨论] N维表排序及自定义顺序

[复制链接]
 楼主| 发表于 2022-9-19 16:49:08 | 显示全部楼层
本帖最后由 llsheng_73 于 2022-9-19 17:17 编辑
masterlong 发表于 2022-9-19 15:34
73兄的代码看着费劲
执行效率比我的高

(setq aa (nth id a))
(setq bb (nth id b))
a,b都是被排序的表内的元素,放在这里处理意味着除首尾两个元素外,每一个元素会这样处理两次,因为第一次的b,下一次它会变成a
sortn里边提前对每一个元素进行了这样的处理
(mapcar'(lambda(x)(mapcar'(lambda(y)(nth y x))sorts))l)

另外,根据你的函数里边的思路,增加了容差,并修改为只排序指定的列,因为你这个更适用
发表于 2022-9-19 19:40:26 | 显示全部楼层
是的
因为确实太费劲
开始没仔细看你的代码

你的处理方式很棒
根据优先级别先重置了多维点表和funs
这样后面的实际比较的过程中
只需要car和cdr
比nth要快很多
发表于 2022-9-19 20:16:04 | 显示全部楼层
啊啊啊
影响速度的最主要因素不是nth
而是我写代码习惯用【'】来代替lambda
刚改成lambda又测试了一下
速度和73兄之前的那个版本几乎没有区别
多的一点点时间
是因为本身代码多一个fuzz的判断

不过73兄先重置的处理方式
应该还是有效果的
毕竟现在测试的多维表
子表长度都比较短
一旦很长的话就能体现出来了
发表于 2022-9-19 21:03:24 | 显示全部楼层
lambda前要用function,不要用',编译后速度上还会更快
发表于 2022-9-19 22:08:26 | 显示全部楼层
不就是图省事想少打几个字母么
没想到影响这么大
发表于 2022-9-20 11:01:16 | 显示全部楼层
感谢大佬分享~
发表于 2023-8-21 20:32:59 | 显示全部楼层

谢谢大哥,用你这个函数,放回的表正确
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 03:23 , Processed in 0.153973 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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