gpt4 book ai didi

recursion - 替换列表中每个出现的元素,仅当它跟在指定元素之后时

转载 作者:太空宇宙 更新时间:2023-11-03 19:03:43 25 4
gpt4 key购买 nike

我正在尝试编写一个函数 replaceAfter(A X Y L)​​,它仅在 X 出现在 A 之后时才将 L 中出现的所有 X 替换为 Y。

例子:

replaceAfter d m t '(f d s d m p m h d m u m) -> '(f d s d t p m h m t u m)

这是我到目前为止的想法:

(define replaceAfter
(lambda(A X Y L)
(cond
( (null? L) '() )
( (if (and (equal? (car L) A) (equal? (car (cdr L)) X) ) (cons (cons (car L) Y) (replaceAfter A X Y (cdr (cdr L))))) )
(#t (cons (car L) (relaceAfter A X Y (cdr L))))
)
)
)

最佳答案

(define replace-after
(lambda (d m t lst)
(let loop ((todo lst)
(done '())
(replace #f))
(if (null? todo)
(reverse done)
(let ((item (car todo)))
(loop (cdr todo)
(cons (if (and replace (eq? m item)) t item) done)
(eq? item d)))))))

关于recursion - 替换列表中每个出现的元素,仅当它跟在指定元素之后时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com