[Haskell-beginners] Better Code
shamsi.saqib at gmail.com
Fri Jan 13 16:05:54 UTC 2017
The problem that I wish to solve is to divide a (sored) list of integers
into sublists such that each sublist contains numbers in consecutive
I have written the following code and it does the trick.
-- Take a list and divide it at first point of non-consecutive number
divide :: [Int] -> [Int] -> ([Int], [Int])
divide first  = (first, )
divide first second = if (last first) /= firstSecond - 1 then (first,
else divide (first ++ [firstSecond]) (tail second)
where firstSecond = head second
-- Helper for breaking a list of numbers into consecutive sublists
breakIntoConsecsHelper :: [Int] -> [[Int]] -> [[Int]]
breakIntoConsecsHelper  [] = []
breakIntoConsecsHelper lst ans = if two ==  then ans ++ [one]
else ans ++ [one] ++
breakIntoConsecsHelper two 
firstElem = head lst
remaining = tail lst
(one, two) = divide [firstElem]
-- Break the list into sublists of consective numbers
breakIntoConsecs :: [Int] -> [[Int]]
breakIntoConsecs lst = breakIntoConsecsHelper lst []
-- Take the tail of the result given by the function above to get the
required list of lists.
However, I was wondering if there was a better way of doing this. Any help
would be highly appreciated.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beginners