韩飞翔 发表于 2023-12-3 15:00:56

选择集排序8式

手里缺明经币了,公布一个选择集排序8式的源码,收点明经币,:lol;

韩飞翔 发表于 2023-12-4 12:03:49

程序不缺函数,只是函数写在排序函数内,然后子函数作为可变变量清空了,鉴于初学者不会改代码,直接给你改好重新发一遍哈,赚了24个币够用一段时间了,这个就不收币了;P

e2002 发表于 2023-12-11 15:50:32

本帖最后由 e2002 于 2023-12-11 15:56 编辑

当初写批量创建 Layouts 工具的时候,也是需要这么个 左右上下 共8种排序方式(实际上是4种,另外四种是其他4种的倒序而已),为了简化代码,所以用了一点办法。大家共同学习提高,代码没有任何限制没有任何保证(包括商用),完全公开,无币可下载:







;; 边界列表的2次排序函数
(defun _lkpt_Layout_CreateByTitleBlocks_Sort ( / i1 sym1 i2 sym2 l_sort u v lReturn)
    (cond
      ( (= sSort "1") (setq i1 1 sym1 '> i2 0 sym2 '<) );;左到右,上到下
      ( (= sSort "2") (setq i1 1 sym1 '< i2 0 sym2 '<) );;左到右,下到上
      ( (= sSort "3") (setq i1 1 sym1 '> i2 0 sym2 '>) );;右到左,上到下
      ( (= sSort "4") (setq i1 1 sym1 '< i2 0 sym2 '>) );;右到左,下到上
      ( (= sSort "5") (setq i1 0 sym1 '< i2 1 sym2 '>) );;上到下,左到右
      ( (= sSort "6") (setq i1 0 sym1 '> i2 1 sym2 '>) );;上到下,右到左
      ( (= sSort "7") (setq i1 0 sym1 '< i2 1 sym2 '<) );;下到上,左到右
      ( (= sSort "8") (setq i1 0 sym1 '> i2 1 sym2 '<) );;下到上,右到左
    );_cond
    (setq l_sort (vl-sort lBoundarys (function (lambda (u v) ((vl-symbol-value sym1) (nth i1 (car u)) (nth i1 (car v)))))) );_第一次排序
    (setq l_sort (vl-sort l_sort (function (lambda (u v)
                                             (if (< (abs (- (nth i1 (car u)) (nth i1 (car v)))) rFuzzy)
                                             ((vl-symbol-value sym2) (nth i2 (car u)) (nth i2 (car v)))
                                             nil
                                             );_fi
                                           );_lam
                                 );_fun
               )
    );_第二次排序
    (setq lReturn l_sort)
);_defun _lkpt_Layout_CreateByTitleBlocks_Sort

e2002 发表于 2023-12-11 16:00:48

关于为什么要分开两次排序:
最初是写为一次排序,在条件中判断x,y两个值,然而结果就是会出现问题,按理应该是不会出现错误的,后来我怀疑是vl-sort的问题,然后自己重写了一个专门针对这个x,y坐标值两个条件来排序的函数,就不会出错了,因此,应该是 vl-sort的问题。记得当时和Qf还讨论过vl-sort的这个bug。

飞雪神光 发表于 2023-12-3 16:38:45

这算是拿别人的码来卖吗

韩飞翔 发表于 2023-12-3 17:20:15

飞雪神光 发表于 2023-12-3 16:38
这算是拿别人的码来卖吗

排序是自己写的,图方便,用了院长公布的几个函数,例如xyp-9pt,xyp-ss2list,其他的都是自己动手写的:lol

hao3ren 发表于 2023-12-3 17:29:12

飞雪神光 发表于 2023-12-3 16:38
这算是拿别人的码来卖吗

算是伪源码

yaojing38 发表于 2023-12-3 18:40:51

不错,,谢谢分享

ghgh0130 发表于 2023-12-3 19:58:11

:lol:lol:lol:lol:lol:lol

xieling888 发表于 2023-12-3 20:58:29

韩飞翔 发表于 2023-12-3 17:20
排序是自己写的,图方便,用了院长公布的几个函数,例如xyp-9pt,xyp-ss2list,其他的都是自己动手写的

xyp-9pt,xyp-ss2list   请帮忙给下这2个函数,谢谢!

tigcat 发表于 2023-12-3 21:39:36

谢谢分享,感觉蛮实用的

yoyoho 发表于 2023-12-3 21:43:19

谢谢分享,实用程序!!!!!

muai2010 发表于 2023-12-3 21:43:34

函数补全吧,用不
页: [1] 2 3 4
查看完整版本: 选择集排序8式