即时搜索我的Haskell类的解决方案。拆分列表并从子列表中获取总和?
我有一个数字列表,我需要返回SUM列表的每一部分。零件除以0.我需要使用FOLDL功能。
实施例:
初始列表:[1,2,3,0,3,4,0,5,2,1]
子列表[[1,2,3],[3,4], [5,2,1]
结果[6,7,7]
我有在初始列表中找到0的函数:
findPos list = [index+1 | (index, e) <- zip [0..] list, e == 0]
(返回[4,6]为初始列表from example)
以及用FOLDL制作SUM的功能:
sumList list = foldl (+) 0 list
但我完全没有把它一起:/
----我的解决方案
最后,我发现完全不同的东西,你们建议。
我花了整整一天,使其:/
groups :: [Int] -> [Int]
groups list = [sum x | x <- makelist list]
makelist :: [Int] -> [[Int]]
makelist xs = reverse (foldl (\acc x -> zero x acc) [[]] xs)
zero :: Int -> [[Int]] -> [[Int]]
zero x acc | x == 0 = addnewtolist acc
| otherwise = addtolist x acc
addtolist :: Int -> [[Int]] -> [[Int]]
addtolist i listlist = (i : (head listlist)) : (drop 1 listlist)
addnewtolist :: [[Int]] -> [[Int]]
addnewtolist listlist = [] : listlist
我认为'结果'应该是'[6,7,8]'而不是'[6,7,7]'。 – Landei 2012-03-20 07:50:19