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

common lisp-替换列表中的相同值,lisp,Lisp,我是lisp编程新手,所以这可能是一个愚蠢的问题,但无论如何,我有一个数字列表,比如(6000 6100 6200 6200 7200等),我想找到并替换第二个相同的值(将1200添加到第二个相同的值),所以结果应该是(6000 6100 6200 7400 7200)。你能帮我吗?非常感谢。老实说,我不明白福克人为什么否决这个问题。虽然这不是一个有趣的问题,但却是一个明确的问题。对于那些书呆子们,让我概括一下,试图让它更有趣。我是lisp新手,需要对列表应用函数。函数的输出不仅取决于当前元素,

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

老实说,我不明白福克人为什么否决这个问题。虽然这不是一个有趣的问题,但却是一个明确的问题。对于那些书呆子们,让我概括一下,试图让它更有趣。我是lisp新手,需要对列表应用函数。函数的输出不仅取决于当前元素,还取决于前面和/或后面的元素,最好的构造是什么

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

(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)

到目前为止,你尝试了什么?-尝试用一个原始列表和一个移位列表构造一些循环,而不是使用lambda的mapcar来获得t/nil模式,但是-没有得到一个工作结果。向我们展示你的代码,从那里我们可以为你指出正确的方向使用mapcar的一个是这样的-(defun nahrad(s1)(mapcar)(lambda(x)(等于x(cadr s1)))s)(如果(等于(汽车s)T)收集(+(汽车s)1200)否则收集(汽车s1)))。我重写了try-with循环,所以-不要再有了…@user7980164:如果你能在你的问题上投入更多的精力,那就太好了。要求非常模糊。也许你应该把它们写下来。如果您有代码,请将其编辑到问题中,并将其格式化为可读的格式。向我们展示它的功能和问题所在。这不会找到第二个相同的值。查找通常意味着一个搜索操作,您的代码也会进行多次更改。该问题涉及第二个相同的值,即单数。它并不是说
每一个
。代码也可以替换第三个相同的值。Lol,downvoted@雷纳·乔斯维格:我同意你最后两个评论。但是在你开始编程之前,你有多少次了解算法的所有方面?在我提出算法之前,我会开始清理需求。