Difference between revisions of "Haskell Quiz/Maximum Sub-Array/Solution Ninju"

From HaskellWiki
Jump to navigation Jump to search
 
Line 20: Line 20:
 
-- e.g. slices [1,2,3] = [[1], [1,2], [1,2,3], [2], [2,3], [3]]
 
-- e.g. slices [1,2,3] = [[1], [1,2], [1,2,3], [2], [2,3], [3]]
 
slices :: Eq a => [a] -> [[a]]
 
slices :: Eq a => [a] -> [[a]]
slices [] = [[]]
+
slices [] = []
slices xs = filter (not . (== [])) $ inits xs ++ slices (tail xs)
+
slices xs = tail $ inits xs ++ slices (tail xs)
 
</haskell>
 
</haskell>

Revision as of 23:23, 10 August 2008

No clever stuff here unfortunately.

module Main where
import System.Environment
import Data.List
import Data.Ord

main :: IO ()
main = do args <- getArgs
          let array = map read args 
          let maxSubArray = maximumSubArray array
          putStrLn $ "The maximum sub array in " ++ show array ++ " is " ++ show maxSubArray
          return ()

maximumSubArray :: [Integer] -> [Integer] 
maximumSubArray = last . sortBy (comparing sum) . slices 

-- returns all sub lists of a given list not including the empty list
-- e.g. slices [1,2,3] = [[1], [1,2], [1,2,3], [2], [2,3], [3]]
slices :: Eq a => [a] -> [[a]]
slices [] = []
slices xs = tail $ inits xs ++ slices (tail xs)