本帖最后由 llsheng_73 于 2014-6-22 19:02 编辑
 - (defun tt(str / a b m n op)
- (setq a(mapcar'(lambda(x)(if(>(length(setq a(vl-remove""(strsplit x'("-")))))1)
- (reverse(setq m(if(>(atoi(car a))0)(atoi(car a))(apply'+(vl-string->list(car a))))
- n(if(>(atoi(last a))0)(atoi(last a))(apply'+(vl-string->list(last a))))
- a(list(car a))op(if(< m n)1+ 1-)
- b(repeat(abs(- m n))
- (setq m(if(>(atoi(car a))0)(atoi(car a))(vl-string->list(car a)))
- a(cons(if(=(type m)'list)
- (if(>(length m)1)(vl-list->string(list(car m)(op(last m))))
- (chr(op(last m))))
- (itoa(op m)))a)))))
- (if a(LIST(car a))'(""))))(vl-remove""(strsplit str'("+"))))
- b(car a)a(cdr a)
- b(if a(foreach x a(setq b(append b x)))b)))
- (defun strsplit(str splits / i a b)
- (while(<""str)
- (if(vl-remove'nil(mapcar'(lambda(x)(vl-string-search x str))splits))
- (setq i(car(vl-sort(vl-remove'nil(mapcar'(lambda(x)(if(setq l(vl-string-search x str))(cons l x)))splits))
- '(lambda(s1 s2)(<(car s1)(car s2)))))
- a(cons(substr str 1(car i))a)b(cons(cdr i)b)
- str(substr str(+(car i)(strlen(cdr i))1)))
- (setq a(cons str a)b(cons "" b)str"")))
- (reverse a))
(tt"-5")->("5")
(tt"50")->("50")
(tt"5-")->("5")
(tt"+5-")->("5")
(tt"5+")->("5")
(tt"-5+")->("5")
(tt"5-21("5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21")
(tt"31-15")->("31" "30" "29" "28" "27" "26" "25" "24" "23" "22" "21" "20" "19" "18" "17" "16" "15")
(tt"31-15+A")->("31" "30" "29" "28" "27" "26" "25" "24" "23" "22" "21" "20" "19" "18" "17" "16" "15" "A")
(tt"21-8+A-H")->("21" "20" "19" "18" "17" "16" "15" "14" "13" "12" "11" "10" "9" "8" "A" "B" "C" "D" "E" "F" "G" "H")
(TT"+14-8+A-F+h-e")->("14" "13" "12" "11" "10" "9" "8" "A" "B" "C" "D" "E" "F" "h" "g" "f" "e")
|