Scheme 以函数作为谓词的方案筛选器
我很抱歉,如果我打开了太多的方案问题,但这已经困扰了我一段时间了 所以我有一个函数(比如pairscorer),它将字符串对的列表作为参数,并根据它们的接近程度对它们进行评分(同一个字符2分,不同字符1分) 比如说Scheme 以函数作为谓词的方案筛选器,scheme,racket,Scheme,Racket,我很抱歉,如果我打开了太多的方案问题,但这已经困扰了我一段时间了 所以我有一个函数(比如pairscorer),它将字符串对的列表作为参数,并根据它们的接近程度对它们进行评分(同一个字符2分,不同字符1分) 比如说 (pair-scorer '(("aaa" "bbb") ("ccc" "ccc") ("aaa" "aab"))) 将返回”(-3 6 3) 我还有一个max函数,它将取这个数字列表的最大值 乙二醇 现在问题来了。我需要创建一个过滤器来接收字符串对列表,即,”(“aaa”“bbb
(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有任何解决方法吗?这种情况下没有内置函数,但根据现有过程编写解决方案很容易;检查我的最新答案