xsso 发表于 2013-1-28 23:03:52

请教一下排序问题

我看了很多排序相关资料,但排列出来的都是按数字或者字母排列,有可能将非常规的顺序排序吗?
如 '(A B C D)可以将它排成 '( C D B A)超出规定的至前或后的排序吗?

=>'( C1 C2 D1 D2 B1 A1 E)

xiabin68 发表于 2013-1-29 01:14:39

顶起来,,我还是想知道

革天明 发表于 2013-1-29 16:35:54

例子再多一些,如果有E、F呢

liuxu042 发表于 2013-1-29 16:44:09

真心不明白你是要求按照什么来规则排序的...

xiaxiang 发表于 2013-1-29 17:32:21

有规律的东西都可以编程实现,以节约人的时间和劳力。。。但是至少你要有排序的规则,除非你想随机排序

hb198075 发表于 2013-1-30 11:03:22

先定义一个排序表,然后根据该表中位置排序就是了。
第一个是未定义项前置,第二个是未定义项后置
示例:(tt1 '("F" "H" "S" "T" "A" "B" "1" "2"))

(defun tt1 (lst / defLst)
(setqdefLst '("N"   "M"   "L"   "K"   "J"   "I"   "H"   "G"   "F"
   "E"   "D"   "C"   "B"   "A"   "Z"   "Y"   "X"   "W"
   "U"   "V"   "O"   "P"   "Q"   "R"   "S"   "T"
    )
) ;_默认的排序方式,根据你的需要定义
(vl-sort lst
   '(LAMBDA (a b)
      (< (vl-position a defLst)(vl-position b defLst))
      )
)
)

(defun tt1 (lst / defLst)
(setq defLst '("N"   "M"   "L"   "K""J"   "I"   "H"   "G""F"
   "E"   "D"   "C"   "B""A"   "Z"   "Y"   "X""W"
   "U"   "V"   "O"   "P""Q"   "R"   "S"   "T"
)
) ;_默认的排序方式,根据你的需要定义
(vl-sort lst
    '(LAMBDA (a b)
       (> (length (member a defLst)) (length (member b defLst)))
   )
)
)

xiabin68 发表于 2013-1-30 14:06:47

高手排序还能这样

xsso 发表于 2013-1-30 21:27:25

hb198075 发表于 2013-1-30 11:03 static/image/common/back.gif
先定义一个排序表,然后根据该表中位置排序就是了。
第一个是未定义项前置,第二个是未定义项后置
示例: ...

实在太厉害!谢谢你的指教!可以自定义序列,就可以批量打印指定先后的图纸
页: [1]
查看完整版本: 请教一下排序问题