gpt4 book ai didi

list - 方案作业问题,求助

转载 作者:行者123 更新时间:2023-12-02 02:34:09 25 4
gpt4 key购买 nike

好吧,我的一个作业问题是取一个列表的列表,并将每个子列表的汽车作为一个列表返回。我把它放在可以打印出值的地方,但它不是列表。老实说,我不知道如何输出列表。这是我得到的:

(define (car-print alist)
(if (null? alist)
(newline)
(begin
(write (car (car alist))) (display " ")
(car-print(cdr alist)))))

这是一种廉价的方法,也许对实际解决这个问题的一些帮助将不胜感激。不一定是完整的答案,而是到达那里的步骤。谢谢。

最佳答案

我的方案有点生疏。我手边只有一个 dr-scheme 解释器...

您需要使用您的列表并只返回每个子列表的第一个元素。

要创建一个列表,你必须使用cons指令,你不需要输出它,你需要将它作为函数结果返回(但你应该已经知道了)。

如果您需要打印结果,您应该将计算与输出分开,并在第二步解决打印问题。

为了构建一个列表,你有几个构造,最基本的是 cons,它需要一个通用元素(也是一个列表)并将它添加到一个列表(也是空的)

(cons 1) => error: cons need two parameters
(cons 1 null) => (list 1)
(cons 1 2) => error: need a value (first parameter) and a list (the second one)
(cons 1 (cons 2 null) => (list 1 2)

现在开始你的作业。通常我不会发布作业代码,但是这次我认为你离解决方案只有一个提示,所以有一个可能的

(define (car-list alist)
(cond
((null? alist) null)
(else (cons (car(car alist)) (car-list (cdr alist))))
)
)
; tail recursion version usage: (car-acc-list alist null)
(define (car-acc-list alist acc)
(cond
((null? alist) acc)
(else (car-acc-list (cdr alist) (cons (car(car alist)) acc)))
)
)

我使用了 cond,而不是 if,因为我认为它可以更好地格式化您的代码。他的结构很简单:一个子句列表,测试条件(或其他)为 car,条件满足时执行的操作为 cdr。如果 action 解析为一个值 ((null?alist) null),则函数返回该值作为返回值。如果触发递归,则函数在递归完成时返回。

解决方案有两个版本,您应该使用步进器/调试器来研究它们的差异。

顺便说一句,我用了drscheme测试代码,这是一款很棒的免费 (lgpl) 软件。与其他方案环境存在细微差别,但代码应该是非常基本的代码,因此它应该可以在任何地方正常运行。

关于list - 方案作业问题,求助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2542271/

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