我正在寻找两个长度相等的列表,并返回列表彼此不相等的所有索引的列表。
例如,如果我输入("orange" "yellow" "green" "green")
和("orange" "green" "yellow" "green")
,我会期望返回(1 2)
((假设列表索引在方案中从0开始)。)
我应该怎么做?
答案 0 :(得分:1)
我会告诉您需要做什么的一般概念,并且我会让您弄清楚细节 - 我不想为您破坏作业:
(define (unequal-indexes lst1 lst2)
(unequal-aux lst1 lst2 XXX1))
(define (unequal-aux l1 l2 idx)
(cond ((null? l1)
XXX2)
((equal? (car l1) (car l2))
XXX3)
(else
XXX4)))
首先,您必须意识到您需要一种方法来跟踪您所依赖的索引。为此,我定义了一个辅助程序unequal-aux
,它从主程序unequal-indexes
调用。在上面的代码中,填写以下空格:
当然,到现在为止,您必须知道列表是由cons
构建的 - 将每个元素构建到列表的其余部分,直到我们到达空(null)列表。