common lisp - 替换列表中的相同值

时间:2017-05-08 11:01:53

标签: lisp

我在lisp编程方面相当新,所以这可能是一个愚蠢的问题,但无论如何我有一个数字列表,如(6000 6100 6200 6200 7200等),我想找到并替换第二个相同的值(添加1200到第二个相同的值)所以结果应该是(6000 6100 6200 7400 7200)。你能帮帮我吗?非常感谢你。

1 个答案:

答案 0 :(得分:-1)

老实说,我不明白为什么falk会回避这个问题。虽然这不是一个有趣的问题,但它是一个明确的问题。对于那里的学生,让我概括一下,试图让它变得更有趣。我是lisp的新手,我需要将一个函数应用于列表。函数的输出不仅取决于当前元素,还取决于前面和/或后面的元素,使用的最佳构造是什么?

我认为最简单的方法是使用loop

(defun nahrad (list change)
  (loop for f = nil then s
        for s in list
        collect (if (eql f s) (+ change s) s)))

(defparameter *test* '(6000 6100 6200 6200 7200))

(nahrad *test* 1200)