common lisp 求助。。。

刘昊源 发布于 2013/04/17 18:19
阅读 211
收藏 0
Define an iterative function RANGE that takes a list of numbers (at least one long) and returns a list of length two of the smallest and largest numbers. Function RANGE should have the following behavior:
就好像这样>(RANGE ‘(0 7 8 2 3 –1))

(-1 8)

输出最大和最小值。。新手不会写。谁来教授我下。



加载中
0
crab2313
crab2313
(defun range (lst) (list (apply #'min lst) (apply #'max lst)))
redraiment
redraiment
这个不符合题意...要求用迭代
南瓜5793
南瓜5793
恩,想了关天,忘了apply的第一个参数是函数名了,哈哈
0
redraiment
redraiment
你这个是作业?很好奇是什么课程~
刘昊源
刘昊源
能帮忙做下吗?好难啊。。
刘昊源
刘昊源
COMMON LISP 人工智能
0
来自杭州的小杨
来自杭州的小杨
(defun min-and-max (lst)
    (list (reduce #'(lambda (a b) (if (< a b) a b)) lst)
          (reduce #'(lambda (a b) (if (> a b) a b)) lst)))

0
南瓜5793
南瓜5793
(defun range (lst)
  (let ((l (copy-list lst)))
    (setf l (sort l #'<))
    `(,(car l) ,@(last l))))
0
fengkuok
fengkuok

))))))))))))))))))))))))))))))))))

)))))))))))))))))))))))))))

)))))))))))))))

0
刘昊源
刘昊源

引用来自“crab2313”的答案

(defun range (lst) (list (apply #'min lst) (apply #'max lst)))
谢谢。。嘿嘿
0
刘昊源
刘昊源

引用来自“帝归”的答案

(defun min-and-max (lst)
    (list (reduce #'(lambda (a b) (if (< a b) a b)) lst)
          (reduce #'(lambda (a b) (if (> a b) a b)) lst)))

   
0
redraiment
redraiment

按照题意,迭代版本:

(defun RANGE (1st)
  (labels ((iter (&rest args)
                 (destructuring-bind ((small large) &optional ((h &rest a))) args
                   (if (null h)
                       (car args)
                     (iter (list (min small h)
                                 (max large h))
                           a)))))
    (iter (list (car 1st) (car 1st))
          (cdr 1st))))

0
刘昊源
刘昊源

引用来自“redraiment”的答案

按照题意,迭代版本:

(defun RANGE (1st)
  (labels ((iter (&rest args)
                 (destructuring-bind ((small large) &optional ((h &rest a))) args
                   (if (null h)
                       (car args)
                     (iter (list (min small h)
                                 (max large h))
                           a)))))
    (iter (list (car 1st) (car 1st))
          (cdr 1st))))

THx
南瓜5793
南瓜5793
这用的是递归吧。。。迭代是指循环吧?
返回顶部
顶部