DEV Community

Discussion on: Daily Challenge #265 - Equal Sides

Collapse
 
aminnairi profile image
Amin

Haskell

halve :: [a] -> ([a], [a])
halve list =
    (take half list, drop (half + rest) list)

    where
        size = length list
        half = div size 2
        rest = mod size 2


isEqualSides :: [Int] -> Int
isEqualSides []        = -1
isEqualSides integers  =
    if (sum firstHalf) == (sum secondHalf) then 
        length firstHalf

    else
        isEqualSides (init firstHalf ++ tail secondHalf)

    where
        (firstHalf, secondHalf) = halve integers