明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1552|回复: 6

[已解答] 求助表按坐标点排序

[复制链接]
发表于 2013-9-2 14:22 | 显示全部楼层 |阅读模式
各位大师:
     请教下:一个lst表中有n个类似((0 0 0) 2 5)的小表,小表内(0 0 0) 为坐标点,后面两个数可以不管,只按坐标点排序
(setq lst '(((250 120 0)2 5)((0 120 0)2 5)((0 0 0) 2 5)((250 0 0)2 5)((125 0 0)2 5)((125 120 0)2 5)));赋值lst表
如何排序成从左到右,从下到上的表: '(((0 0 0) 2 5)((125 0 0)2 5)((250 0 0)2 5)((0 120 0)2 5)((125 120 0)2 5))((250 120 0)2 5))

 楼主| 发表于 2013-9-2 14:24 | 显示全部楼层
小表((0 0 0) 2 5)中后面数字2和5是由变量赋值的,请求大家帮忙,谢谢
 楼主| 发表于 2013-9-2 14:50 | 显示全部楼层
试出来了,大家有没有更好的方法?烦请赐教
  1. (setq lst1(vl-sort lst
  2.       '(lambda (x y)
  3.          (if (equal (caar x) (caar y) 10)
  4.            (< (cadar x) (cadar y))
  5.            (< (caar x) (caar y))
  6.          )
  7.        )
  8.    )
  9.   )
 楼主| 发表于 2013-9-2 15:28 | 显示全部楼层
没细看,结果错误,大侠们人呢。
 楼主| 发表于 2013-9-2 16:40 | 显示全部楼层
明白了,还差一个步续,再排一次
发表于 2013-9-2 17:05 | 显示全部楼层
  1. (defun tt (lst)  ;主程序
  2.   (setq lst (sort lst < cadar))
  3.   (sort2 lst)
  4. )

  5. (defun sort (lst fun n)  ;一级排序
  6.   (vl-sort lst '(lambda (x y) (fun (n x) (n y))))
  7. )

  8. (defun sort2 (lst)    ;二级排序
  9.   (if lst
  10.     (append
  11.       (apply 'list
  12.              (sort
  13.                (vl-remove-if-not
  14.                  '(lambda (x) (= (cadar x) (cadaar lst)))
  15.                  lst
  16.                )
  17.                <
  18.                caar
  19.              )
  20.       )
  21.       (sort2
  22.         (vl-remove-if '(lambda (x) (= (cadar x) (cadaar lst))) lst)
  23.       )
  24.     )
  25.   )
  26. )

评分

参与人数 1明经币 +1 收起 理由
lisp爱好者 + 1 赞一个!谢谢大师,谢谢

查看全部评分

发表于 2013-9-2 17:12 | 显示全部楼层
lisp爱好者 发表于 2013-9-2 14:50
试出来了,大家有没有更好的方法?烦请赐教

  1. (setq lst1 (vl-sort lst
  2.                     '(lambda (x y)
  3.                        (if (equal (cadar x) (cadar y) 10)
  4.                          (< (caar x) (caar y))
  5.                          (< (cadar x) (cadar y))
  6.                        )
  7.                      )
  8.            )
  9. )

楼主的还是很巧妙的,我的自己绕自己了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 16:23 , Processed in 0.450758 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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