Собираем сбалансированную 3S3P батарею из имеющихся банок:
import Data.Function
import Data.List
import Data.List.Split
main = interact $ show . doit . map (read :: String -> Double) . lines
doit list = minimumBy (compare `on` snd) $ map (\x -> (x, eval3s x)) $ mk3s list
mk3s :: [Double] -> [[[Double]]]
mk3s list = map (chunksOf 3) $ permutations list
eval3s :: [[Double]] -> Double
eval3s list = let sums = map sum list in (maximum sums) - (minimum sums)