hhaoma 发表于 2014-8-24 14:20:18

发一个最难的排序题目

(defun c:px()

(setq a 3.84)
(setq b 3.1)
(setq c 3.54)
(print (vl-sort '( a b c) '<))
)
;想输出 (3.1 3.54 3.84)
;可是程序却显示 ; 错误: 用于比较的参数类型不正确: C B
;我想从小到大输出 请问该如何实现?

xyp1964 发表于 2014-8-24 14:20:19

(defun c:tt ()
(setq a 3.84
        b 3.1
        c 3.54
)
(print (vl-sort (list a b c) '<))
)

SunSpring 发表于 2014-8-24 14:30:36

本帖最后由 SunSpring 于 2014-8-24 14:37 编辑

重复删除.

xyp1964 发表于 2014-8-24 14:33:13

扩展:(setq a 3.84 b 3.1 c 3.54 f 1 d 2 e 1)如何从小到大排序?

hhaoma 发表于 2014-8-24 14:34:40

谢谢论坛各位兄弟!!!高手啊!

SunSpring 发表于 2014-8-24 15:13:33

xyp1964 发表于 2014-8-24 14:33 static/image/common/back.gif
扩展:(setq a 3.84 b 3.1 c 3.54 f 1 d 2 e 1)如何从小到大排序?

(defun c:px ()
(setq a 3.84 b 3.1 c 3.54 f 1 d 2 e 1)
(setq lst0 (list a b c d e f))
(setq lst1 (vl-sort-i lst0 '<))
(mapcar '(lambda (x) (nth x lst0)) lst1)
)

nzl1116 发表于 2014-8-25 18:34:55

xyp1964 发表于 2014-8-24 14:33 static/image/common/back.gif
扩展:(setq a 3.84 b 3.1 c 3.54 f 1 d 2 e 1)如何从小到大排序?

这种排列其实很简单,转字符串后再排列
页: [1]
查看完整版本: 发一个最难的排序题目