好吧,我不确定Haskell是否有直接的方法,但这是我的困境。
假设我有一个包含以下内容的文本文件:
map z [1,2,3,4,5,6,7] Z
test x [1,2,3] X
map y [1,2,3,4,5] Y
map q [1...4] Q
我需要做的是找到地图“列表”中包含的最大值。例如,在上面的例子中,任何地图的最高值是7。 它们通常格式为
map _ [] _
所以我只需要在这个例子中找到地图所拥有的最大值。有没有直接的方法呢?
感谢。
答案 0 :(得分:3)
我的攻击计划是这样的:
让我们知道在你遇到问题之前你在列表中走了多远,我们可以提供一些更有针对性的建议。
答案 1 :(得分:1)
如果你的文件格式有点简单,你可以这样写:
process :: String -> String
process input = show . maximum $ map (maximum . readMapLine) goodLines
where
isGood line = head (words line) == "map"
goodLines = filter isGood (lines input)
readMapLine line = read ((words line) !! 2) :: [Integer]
main :: IO ()
main = do
input <- getContents
print $ process input
我省略了所有错误检查,我的解决方案无法read
文件[1...4]
中的最后一个列表:我认为它应该丢弃它。但你有了主意;-)