gpt4 book ai didi

list - 将每个子列表的第一个元素乘以 -1?口齿不清

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

作为一个更大项目的一部分,我希望能够将每个子列表的每个第一个元素乘以 -1。我正在尝试像这样使用递归来做到这一点:

(defun negative (secondpoly)
(let ((t1(car secondpoly))
(rem(cdr secondpoly)))
(let ((c1(car t1)))
(if (not (null (cdr secondpoly)))
(negative (append (* c1 -1) rem))
)
)
)
)

有了这个输入:

(pminus '((5 x 2)(100 x 2)))

我想收到这个输出:

(pminus '((-5 x 2)(-100 x 2)))

我想知道是否有人可以告诉我一个方法来做到这一点?

最佳答案

如果您的输入确实是这样的:'(pminus ((5 x 2)(100 x 2)))

(defun negative-first (poly)
(cons (car poly)
(mapcar (lambda (el)
(cons (- (car el)) (cdr el)))
(cadr poly))))

CL-USER> (negative-first '(pminus ((5 x 2)(100 x 2))))
(PMINUS (-5 X 2) (-100 X 2))

但对我来说似乎解释有误,你的输入是 '((5 x 2)(100 x 2)) 如果是这样,你的函数是:

(defun negative-first (poly)
(mapcar (lambda (el)
(cons (- (car el)) (cdr el)))
poly))


CL-USER> (negative-first '((5 x 2)(100 x 2)))
((-5 X 2) (-100 X 2))

如果您需要处理更多嵌套和复杂的数据,您可能应该了解一些示例,此函数将仅适用于一级 ((5 x 2) (100 x 2) (40 x 3) 。 ... )

关于list - 将每个子列表的第一个元素乘以 -1?口齿不清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27400499/

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