मैं अपने हास्केल क्लास के लिए समाधान ढूंढ रहा हूं।विभाजन सूची और sublist से योग बनाते हैं?
मेरे पास संख्याओं की एक सूची है और मुझे सूची के प्रत्येक भाग के लिए एसयूएम वापस करने की आवश्यकता है। भागों को 0 से विभाजित किया गया है। मुझे FOLDL फ़ंक्शन का उपयोग करने की आवश्यकता है।
उदाहरण:
प्रारंभिक सूची [1,2,3,0,3,4,0,5,2,1]
sublist [[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] प्रारंभिक सूची के लिए उदाहरण से)
और 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,7]' के बजाय '6,7,8] होना चाहिए। – Landei