0

我有以下列表示例,其中第一行有一个结果,第二行有一个过滤器,我只需要保留与过滤器中至少一对匹配的结果。

(((john . ?x) (new-york . ?city)) ((mike . ?x) (chicago . ?city)) ((mary . ?x) (london . ?city)))
(((new-york . ?city)) ((chicago . ?city)))

(((john . ?x) (new-york . ?city)) ((mike . ?x) (chicago . ?city)) ((mary . ?x) (london . ?city)))
(((john . ?x) (air-hockey . ?game)) ((mike . ?x) (tennis . ?game)))

我遇到的问题是结果和过滤器都有可变数量的参数,我不知道如何一次取出一个元素进行比较。我可以使用一些提示,因为这是一个家庭作业。

Match 在第一个示例中意味着 john 和 mike,因为他们的城市与过滤器匹配。而在第二个示例中,它只会将他们玩的每个游戏添加到结果中。

虽然您必须检查第一行中的每个条目,但match要使其正常工作,您必须为第二行中的至少一个条目获取 #t

4

2 回答 2

2

从您的问题中,我不清楚在这种情况下“匹配”是什么意思。让我建议您可能首先要开发一个辅助函数,该函数接受第一行中的一个元素和第二行中的一个元素,并在它们匹配时返回“true”。

另外,我肯定会先写一些测试用例:)。

于 2013-04-06T21:37:08.850 回答
1

我相信这与这里提出的问题相同,看看我的回答

于 2013-04-06T22:19:14.387 回答