【发布时间】:2025-12-12 20:40:02
【问题描述】:
我的代码如下
(value, index) = maximumBy (comparing fst) (zip list [0..])
在大多数情况下工作正常,但是,在平局的情况下,它返回最接近尾部的索引,这与我想要的相反。
也就是说,如果列表是xs = [2,7,3,7],我希望它返回(7,1) 而不是(7,3)。有没有简单的方法,或者我需要完全重写它?
【问题讨论】:
-
您当前的测试只是
comparing fst,因此它完全忽略了索引(snd)。您可能希望使用更复杂的测试,也就是适当考虑索引的测试。 -
minimumBy (comparing (first Down)) $ zip [1,7,2,7] [0..]。或maximumBy (comparing (second Down)) $ ...。虽然这取决于Ord中的索引。 -
@jpmarinier 到 your comment 在现已删除的 Q 上,指向指南的是 amalloy,而不是我。根据他们的解释,我发表上述评论也犯下了不可饶恕的罪行。
-
@WillNess - 是的,很抱歉造成混乱。当问题在我脚下被删除时,我刚刚发现了我的错误。所以我没有时间将我的评论重定向到 amalloy。所以是这样的丛林:-) 无论如何感谢你找到一种方法回到我身边。