gpt4 book ai didi

cLISP 中的列表操作

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

我有以下结构:

(defstruct node
parent
state
cost)

我有一个 node 类型的结构列表。

我正在尝试实现两个功能:

(defun findMinimum (list)

returns the node with the smallest cost in the list
)


(defun replaceNode (list)

Checks if a node with the same state as new-node already exists in the list.
If so, replaces that node with new-node.
)

我当前的解决方案只是遍历整个列表以检查每个节点。我想知道在 cLISP 中是否有更有效的方法来做到这一点?

任何帮助将不胜感激。

最佳答案

我已将您的函数名称从驼峰式更改为更符合 Lispy 风格:

(defun find-minimum (list)
(reduce #'min list :key #'node-cost) )

对于 replace-node,我猜你需要另一个关于新节点的参数。让我们假设这就是您想要的:

(defun replace-node (new-node list)
(let ((pos-old-node (position (node-state new-node) list :key #'node-state)))
(when pos-old-node
(setf (nth pos-old-node list) new-node) )))

关于cLISP 中的列表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40975131/

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