在Lisp中返回列表中的项目

时间:2015-06-04 04:46:42

标签: lisp

我必须在Lisp中编写一个程序,如果它包含偶数个元素,则返回列表的第一项,如果它包含奇数个元素,则返回最后一个。我需要一些建议从哪里开始?我不需要整个计划。

1 个答案:

答案 0 :(得分:0)

您可以使用length获取列表的长度。

(length '(a b c)) ;; 3

然后,您可以针对谓词函数evenp检查该数字,该函数返回TNIL,具体取决于参数是否为偶数。

(evenp 1) ;; NIL
(evenp 2) ;; T

函数first返回列表的第一个元素。

(first '(a b c)) ;; A

函数last返回列表的最后一个缺点,因此您必须使用FIRST打开该值。

(last '(a b c)) ;; (C)
(first (last '(a b c))) ;; C

然后你可以把它们组合成一个像这样的函数:

(defun get-first-if-even-length (list)
  (if (evenp (length list))
      (first list)
    (first (last list))))

此函数返回列表中的第一个或最后一个元素,具体取决于其长度是否为偶数。