gpt4 book ai didi

list - 如何从列表中获取得分最高的项目

转载 作者:行者123 更新时间:2023-12-01 14:02:58 29 4
gpt4 key购买 nike

我在 Haskell 中有一个具有 [(item, score)] 结构的列表。

highestScoreItem :: [(Item, Int)] -> Item

highestScoreItem 是一个接受 (Item, Int) 列表并返回得分最高的项目的函数。

我尝试了头尾递归,但仍然无法完成该功能。 Filter 和 List Comprehension 似乎都是正确的方法,但我绝对不够先进,无法很好地使用它....

有什么帮助吗?

最佳答案

Filter and List Comprehension both seem to be the right way.

没有。您希望将列表缩减为单个元素 (Item, Int) 并使用 fst。这不是过滤器,而是折叠。

maximumByData.List 中:

maximumBy :: (a -> a -> Ordering) -> [a] -> a

如果你有一个函数

compareScore :: (Item, Int) -> (Item, Int) -> Ordering

基于snd比较两对(Item, Int),你可以像这样使用它:

highestScoreItem = fst . maximumBy compareScore

幸运的是,有 comparingData.Ord 中,它使您能够根据可比较的事物来比较事物:

compareScore = comparing snd

这就是您所需要的。作为练习,尝试自己编写 comparingmaximumBy,然后尝试只用 foldr 解决问题。

关于list - 如何从列表中获取得分最高的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27587170/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com