lisp 習題 post+

babyyellow發表於2012-08-07
假設函式 pos+ 接受一個列表並返回把每個元素加上自己的位置的列表:


> (pos+ '(7 5 1 4))
(7 6 3 7)

CL-USER> (defun post+ (lst)
       (and (listp lst)
        (let ((n (length lst)) (x nil))
          (dolist (obj lst)
            (push (+ (nth (- n 1)lst) (- n 1)) x)
             (setf n ( - n 1)))
              x)))

CL-USER> (post+ 1)
NIL
CL-USER> (post+ '(0 1 2 3 4))
(0 2 4 6 8)
CL-USER> (post+ (list 1 2 3 4))
(1 3 5 7)




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-740236/,如需轉載,請註明出處,否則將追究法律責任。

相關文章