q3_2006 发表于 2013-8-11 14:53:10

不对"4-15奇数层" "4-15偶数层"反了哟!

q3_2006 发表于 2013-8-11 15:15:02

dwg001 发表于 2013-8-11 09:40 static/image/common/back.gif
;;建筑层数排序,早期也玩过的。dwg001
(defun c:tt (/ al bl i j l m n)
(setq l '("-2层" "1层"


排序有问题哟,4-15偶数层 在前!

lsjj 发表于 2013-8-11 17:18:12

此題"4-15偶數層"應該在"4-15奇數層"之前
這類排序不具通用性,屋頂層、地下層、甚至地面層常有不同表示方式,建議有樓層表可對照排序

dwg001 发表于 2013-8-11 17:52:03

q3_2006 发表于 2013-8-11 15:15 static/image/common/back.gif
排序有问题哟,4-15偶数层 在前!

;;再增加一个若干层奇偶数层的判断。如"4-15奇数层" "4-15偶数层" "43-50奇数层" "43-50偶数层"

(foreach x m
      (if(wcmatch x   "*奇数层")(progn
                                                  (setq jsch xjscwz (vl-position x m))
                                                (setq y (vl-string-right-trim "奇数层" x))
                                                (setq nn (vl-string-position (ascii "-") y))
                                                (setq str-q (read (substr y 1 nn)))
(if (zerop (rem str-q 2.0))
   (progn
       (setq cl '() dl '()k -1      r (1+ jscwz) )
       (repeat jscwz
        (setq cl (cons (nth (setq k (1+ k)) m) cl))
      )
       (repeat (- (length m) jscwz 2)
        (setq dl (cons (nth (setq r (+ 1 r)) m) dl))
      )
    (setq m (append (reverse cl) (list (strcat y "偶数层"))(list (strcat y "奇数层"))   (reverse dl) ))
      )
    )      )    )      )

命令: tt
原始list=("-2层" "1层" "2层" "16层" "3层" "-6层" "4-15奇数层" "屋面层"
"4-15偶数层" "17层" "-3层" "-1层" "99层" "43-50奇数层" "43-50偶数层")
排序list=("-6层" "-3层" "-2层" "-1层" "1层" "2层" "3层" "4-15偶数层"
"4-15奇数层" "16层" "17层" "43-50奇数层" "43-50偶数层" "99层" "屋面层")

q3_2006 发表于 2013-8-11 18:21:38

dwg001 发表于 2013-8-11 17:52 static/image/common/back.gif
;;再增加一个若干层奇偶数层的判断。如"4-15奇数层" "4-15偶数层" "43-50奇数层" "43-50偶数层"

(for ...

明白了,谢谢高人指点!

jaminth 发表于 2013-8-11 20:08:34

谢谢dwg001,问题算是解决了!
说来惭愧,对于(Vl-sort l '(lambda(a b)(< (atoi a) (atoi b))))
表达式后面(< (atoi a) (atoi b))还不是怎么理解atoi?

q3_2006 发表于 2013-8-12 12:58:44

jaminth 发表于 2013-8-11 20:08 static/image/common/back.gif
谢谢dwg001,问题算是解决了!
说来惭愧,对于(Vl-sort l '(lambda(a b)(< (atoi a) (atoi b))))
表达式后 ...

取整按升序重排!

jaminth 发表于 2013-8-12 20:57:43

谢谢楼上!

jyzas 发表于 2013-8-13 06:58:57

不错,支持10楼

fl202 发表于 2013-8-14 09:14:42

这样的程序没有通用性,应该考虑将层的说法上再规范一些。
页: 1 [2]
查看完整版本: 利用vl-sort 对中文进行排序,未能出现设想结果,请各位大侠帮忙,谢谢!