gpt4 book ai didi

lisp - 根据列表中的对添加两个或多个列表

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

我不太精通函数式风格,我不想使用任何set函数,所以我遇到了问题。我真的很纠结是应该递归还是以不同的方式来做。

我在列表中有一组对,如下所示:

((4 2) (3 1) (3 2) (2 4) etc...)

在这对 '(4 2) 中,第二个元素 '2' 告诉我它匹配到哪些其他对,在本例中为 '(3 2)。因此,我使用它们的第一个元素将这两对加在一起,在本例中为“4”和“3”。新对现在是 '(7 2)。对于列表中的其他对,依此类推。最后,它应该返回:

 ((7 2) (3 1) (2 4))

我不太关心顺序。.我已经有一个可以添加两个不同对的工作函数。此函数的唯一假设是配对匹配。

因此,我想做的是操纵这个成对列表以这些方式返回一个列表。

例子:

 take the list ((4 2) (3 1) (3 2) (2 4))    
matching-pairs: '(4 2) and '(3 2)

and then return --> ((7 2) (3 1) (2 4))


take the list ((2 1) (3 2) (1 2) (5 1) (6 3))
matching-pairs: '(2 1) and '(5 1)
'(3 2) and '(1 2)

and then return --> ((7 1) (4 2) (6 3))

感谢您的时间和努力。

最佳答案

遍历您的列表并将每一对的 car 存储到 assoc 的列表中,如下所示:

original: ((2 . 1) (3 . 2) (1 . 2) (5 . 1) (6 . 3))
new: ((1 . (2 5))
(2 . (3 1))
(3 . (6))

然后将所有 cdr 相加并翻转每一对得到:

          ((7 . 1) (4 . 2) (6 . 3))

关于lisp - 根据列表中的对添加两个或多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14131969/

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