明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1129|回复: 2

[提问] 求表处理函数

[复制链接]
发表于 2021-6-1 17:59:32 | 显示全部楼层 |阅读模式
;;待处理表lst1
  1. ;;待处理表lst1
  2. (setq        lst1 '(
  3.                                                  (0 3 3)
  4.                                                  (0 2 2)
  5.                                                  (0 1 1)
  6.                                                  (1 1 1)
  7.                                                  (1 3 3)
  8.                                                  (1 2 2)
  9.                                                  (2 3 3)
  10.                                                  (2 1 1)
  11.                                                  (2 2 2)
  12.                                                         ;还有很多
  13.                                                 )
  14. )

函数一:
步骤一:把lst1中按子表第一个元素大小从小到大排序,得到lst2,
步骤二:在lst2中,当子表第一个元素相同的情况下,按第二个元素大小冲大到小排序,得到目标表lst3
  1. ;;目标表lst3
  2. (setq        lst3 '(
  3.                                                  (0 1 1)
  4.                                                  (0 2 2)
  5.                                                  (0 3 3)
  6.                                                  (1 1 1)
  7.                                                  (1 2 2)
  8.                                                  (1 3 3)
  9.                                                  (2 1 1)
  10.                                                  (2 2 2)
  11.                                                  (2 3 3)
  12.                                                         ;还有很多
  13.                                                 )
  14. )

函数二:
根据lst3,把子表中的第一个元素取出并去重,得到lst4
  1. (setq lst4 '(
  2.                                                  0
  3.                                                  1
  4.                                                  2
  5.                                                  ;还有很多
  6.                                                  )
  7. )

函数三:
lst4中任意一个数,比如 0 ,求lst3中第一个元素为0,第三个元素的最小值,最大值,以表形式返回  (最小值  最大值)
如输入0,返回(1  3)

发表于 2021-6-1 22:03:22 | 显示全部楼层
搜下表排序 很多的
推荐黄大师的
http://bbs.mjtd.com/forum.php?mo ... 1%ED%2B%C5%C5%D0%F2
发表于 2021-6-1 22:29:39 | 显示全部楼层
  1. (setq lst3
  2.       (vl-sort
  3.        lst1
  4.        '(lambda (x y)
  5.          (or (< (car x)(car y))
  6.           (and (= (car x)(car y))
  7.            (< (cadr x)(cadr y)))))))
  8. (setq lst4 (vl-sort (mapcar 'car lst3) '<))


http://atlisp.cn
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-1 16:54 , Processed in 0.191325 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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