我在 Haskell 中有一个函数从列表中找到幂的最大值:
prob99 = maximum $ map (\xs -> (head xs)^(head (tail xs))) numbers
我需要找到的是这个最大值在结果列表中的位置。我该怎么办?
编辑:我找到了一个这样的解决方案:
n = [[519432,525806],[632382,518061]....
prob99b [a,b] = b* (log a)
answer = snd $ maximum (zip (map prob99b n) [1..])
最佳答案
如何找到最大元素的索引?尝试所有索引并检查它们是否为最大值怎么样?
ghci> let maxIndex xs = head $ filter ((== maximum xs) . (xs !!)) [0..]
但这听起来像是已经存在函数的东西。如果我使用现有函数,我的代码将更具可读性、可维护性,甚至可能更高效。
仅供引用,您也可以问Hoogle可以搜索的
通过 Haskell 类型签名(如 Will 建议的那样):
$ hoogle "Ord a => [a] -> Int" | head
<Nothing relevant>
$ # hmm, so no function to give me the index of maximum outright,
$ # but how about finding a specific element, and I give it the maximum?
$ hoogle "a -> [a] -> Int" | head
Data.List elemIndex :: Eq a => a -> [a] -> Maybe Int
Data.List elemIndices :: Eq a => a -> [a] -> [Int]
关于list - 在 Haskell 的列表中查找元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496980/