module Exercise05 where import Data.List -- May or may not be useful: computes the logarithm base 2 (rounded down) of the given number. -- You don't have to move this into the WETT tags if you want to use it. log2 :: (Integral a, Num b) => a -> b log2 = let go acc n = if n <= 1 then acc else go (acc + 1) (n `div` 2) in go 0 {-WETT-} decompose :: [Integer] -> [Integer] decompose ds |elem 0 ds = [] |elem 1 ds =[product ds] |otherwise = helper ds ds 0 : decompose (map (`div`2) ds) -- |otherwise = :decompose (map (`div`2) ds) where helper _ [] sum = sum helper ds (x:xs) sum | odd x = helper (delete x ds++[x-1]) xs (sum+product(delete x ds)) |otherwise =helper ds xs sum {-TTEW-}