Code: Select all
(set 'source-list .... your list of strings goes here...
(define (method1 lst)
(map (fn (x) (setf (lst x) (upper-case (lst x))))
(sequence 0 (- (length lst) 1) 2))
lst)
(define (method2 lst)
(map (fn (x y) (if (= (/ x 2) (div x 2)) y (upper-case y)))
(sequence 0 (- (length lst) 1))
lst))
(define (odd? num) (= "1" (last (bits num))))
(define (odd? num) (= (& num 1) 1))
(define (method3 lst)
(map (fn (x) (if (odd? $idx) (upper-case x) x)) lst))
(define (method4 lst)
(dolist (x lst) (if (odd? $idx) (setf (lst $idx) (upper-case $it))))
lst)
(define (method5 lst)
(flat (replace '(+) (explode lst 2 true) (list (upper-case (first $it)) (last $it)) match)))
(define (method6 lst)
(apply append (map (fn (l) (list (upper-case (first l)) (last l))) (explode lst 2 true))))
(set 'other-one (lambda (x y z)
(cond ((= x y) z)
((= x z) y))))
(define (method7 lst (first-case upper-case))
(if (empty? lst) (list)
(cons (first-case (first lst))
(method7 (rest lst)
(other-one first-case
lower-case
upper-case)))))
(define (method8 lst)
(dolist (x lst) (case (& $idx 1) (0 (setf (lst $idx) (upper-case $it)))))
lst)
(define (method9 lst)
(dolist (this-string lst)
(if (odd? $idx)
(push (upper-case this-string) newList -1)
(push this-string newList -1)))
newList)
(push (list (time (method1 source-list)) "method1") results)
(push (list (time (method2 source-list)) "method2") results)
(push (list (time (method3 source-list)) "method3") results)
(push (list (time (method4 source-list)) "method4") results)
(push (list (time (method5 source-list)) "method5") results)
(push (list (time (method6 source-list)) "method6") results)
(push (list (time (method7 source-list)) "method7") results)
(push (list (time (method8 source-list)) "method8") results)
(push (list (time (method9 source-list)) "method9") results)
(map println (sort results))
Note that method7 requires a larger stack for longer lists.