好吧,我不确定在 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 _ [] _
所以我只需要在这个例子中找到地图持有的最大值。有没有直接的方法可以做到这一点?
谢谢。
我的攻击计划是这样的:
让我们知道您在卡住之前将其排到了多远,我们可以提供一些更有针对性的建议。
如果你的文件格式有点简单,你可以这样写:
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]:我认为它应该只是丢弃它。但你明白了;-)