Scheme 以函数作为谓词的方案筛选器

Scheme 以函数作为谓词的方案筛选器,scheme,racket,Scheme,Racket,我很抱歉,如果我打开了太多的方案问题,但这已经困扰了我一段时间了 所以我有一个函数(比如pairscorer),它将字符串对的列表作为参数,并根据它们的接近程度对它们进行评分(同一个字符2分,不同字符1分) 比如说 (pair-scorer '(("aaa" "bbb") ("ccc" "ccc") ("aaa" "aab"))) 将返回”(-3 6 3) 我还有一个max函数,它将取这个数字列表的最大值 乙二醇 现在问题来了。我需要创建一个过滤器来接收字符串对列表,即,”(“aaa”“bbb

我很抱歉,如果我打开了太多的方案问题,但这已经困扰了我一段时间了

所以我有一个函数(比如pairscorer),它将字符串对的列表作为参数,并根据它们的接近程度对它们进行评分(同一个字符2分,不同字符1分)

比如说

(pair-scorer '(("aaa" "bbb") ("ccc" "ccc") ("aaa" "aab")))
将返回
”(-3 6 3)

我还有一个max函数,它将取这个数字列表的最大值

乙二醇

现在问题来了。我需要创建一个过滤器来接收字符串对列表,即,
”(“aaa”“bbb”)(“ccc”“ccc”)(“aaa”“aab”)
,并仅返回在运行评分函数时产生最大值的一对(或多对)

如何实现此过滤器?
希望我说得够清楚。

我假设您有一个
score
函数,可以找到单个对的分数(必须在
pair scorer
中调用)。试试这个:

(argmax score '(("aaa" "bbb") ("ccc" "ccc") ("aaa" "aab")))
这里使用的技巧是,它接收一个应用于列表中每个元素的函数,并找到该函数返回最大值的元素

请注意,
argmax
将返回单个元素,即使有多个元素具有相同的最大值,如果这是一个问题,您必须编写自己的函数,但就现有过程而言,使用以下方法很容易:


上面将返回一个列表,其中包含所有得分最高的元素。如果只有一个,那么列表将包含一个元素。

我假设您有一个
score
函数,可以找到单个对的分数(这必须在
pairscorer
中调用)。试试这个:

(argmax score '(("aaa" "bbb") ("ccc" "ccc") ("aaa" "aab")))
这里使用的技巧是,它接收一个应用于列表中每个元素的函数,并找到该函数返回最大值的元素

请注意,
argmax
将返回单个元素,即使有多个元素具有相同的最大值,如果这是一个问题,您必须编写自己的函数,但就现有过程而言,使用以下方法很容易:


上面将返回一个列表,其中包含所有得分最高的元素。如果只有一个,那么列表将包含一个元素。

我假设您有一个
score
函数,可以找到单个对的分数(这必须在
pairscorer
中调用)。试试这个:

(argmax score '(("aaa" "bbb") ("ccc" "ccc") ("aaa" "aab")))
这里使用的技巧是,它接收一个应用于列表中每个元素的函数,并找到该函数返回最大值的元素

请注意,
argmax
将返回单个元素,即使有多个元素具有相同的最大值,如果这是一个问题,您必须编写自己的函数,但就现有过程而言,使用以下方法很容易:


上面将返回一个列表,其中包含所有得分最高的元素。如果只有一个,那么列表将包含一个元素。

我假设您有一个
score
函数,可以找到单个对的分数(这必须在
pairscorer
中调用)。试试这个:

(argmax score '(("aaa" "bbb") ("ccc" "ccc") ("aaa" "aab")))
这里使用的技巧是,它接收一个应用于列表中每个元素的函数,并找到该函数返回最大值的元素

请注意,
argmax
将返回单个元素,即使有多个元素具有相同的最大值,如果这是一个问题,您必须编写自己的函数,但就现有过程而言,使用以下方法很容易:


上面将返回一个列表,其中包含所有得分最高的元素。如果只有一个元素,那么列表将包含单个元素。

没问题:)。请注意,
argmax
将返回单个元素,即使有多个元素具有相同的最大值,我希望这是okHmmm,这实际上不正常:/n有任何解决方法吗?这种情况下没有内置函数,但根据现有过程编写解决方案很容易;检查我的更新答案没有问题:)。请注意,
argmax
将返回单个元素,即使有多个元素具有相同的最大值,我希望这是okHmmm,这实际上不正常:/n有任何解决方法吗?这种情况下没有内置函数,但根据现有过程编写解决方案很容易;检查我的更新答案没有问题:)。请注意,
argmax
将返回单个元素,即使有多个元素具有相同的最大值,我希望这是okHmmm,这实际上不正常:/n有任何解决方法吗?这种情况下没有内置函数,但根据现有过程编写解决方案很容易;检查我的更新答案没有问题:)。请注意,
argmax
将返回单个元素,即使有多个元素具有相同的最大值,我希望这是okHmmm,这实际上不正常:/n有任何解决方法吗?这种情况下没有内置函数,但根据现有过程编写解决方案很容易;检查我的最新答案