-2
我想回答的问题是: 写一个函数(在Dr.Racket/Scheme中)称为merge,它从两个玩具列表(玩具1和玩具2)中生成玩具列表。这个产生的名单将包含来自玩具1和玩具2的交替玩具,其中第一个来自玩具1。另外,如果玩具1和玩具2中的第n个玩具是相同的玩具(颜色和类型),则所产生的列表应该仅包含具有该颜色和类型的一个玩具结构(例如不复制)。如果列表长度不同,则列表中的最后一个玩具将成为较长列表中的最后一个玩具。我们如何编写一个将两个列表合并在一起的函数?
使用以下结构来完成这样一个问题:
(define-struct toy (color type))
;; A Toy is a (make-toy Str Str)
对这一计划的一个例子是:
(merge (list (make-toy "blue" "ball") (make-toy "blue" "spring")
(make-toy "red" "helmet") (make-toy "purple" "band"))
(list (make-toy "yellow" "van") (make-toy "blue" "spring")))
产生
(list (make-toy "blue" "ball") (make-toy "yellow" "van")
(make-toy "blue" "spring") (make-toy "red" "helmet")
(make-toy "purple" "band"))
现在,我已经创建了方案到目前为止如下:
(define (merge toys1 toys2)
(cond
[(empty? toys1) toys2]
[(empty? toys2) toys1]
[else
(first toys1) (first toys2)
(merge (rest toys1) (rest toys2))]))
现在我遇到的问题是,我不知道我将如何纳入最终列表中删除重复条件的条件。 任何意见,我会强大的帮助!
对不起,但这看起来像一个家庭作业的要求,这不是StackOverflow的。请自己尝试解决,如果遇到麻烦,那么您可以寻求解决问题的帮助。 –
好的,谢谢你让我知道! – Mark
其实,家庭作业还行,[但](http://meta.stackexchange.com/questions/10811/how-do-i-ask-and-answer-homework-questions)你应该先尝试自己解决问题然后询问您现有的实施情况。 – Noumenon