In today’s Programming Praxis exercise, our goal is to write a function that gives all unique sums that produce a given number. Let’s get started, shall we?
The function is fairly trivial. We avoid duplicates by allowing only equal or decreasing series of numbers.
part :: Int -> [[Int]] part 0 = [] part n = [x:y | x <- [1..n], y <- part (n-x), [x] >= take 1 y]
A quick test to see if everything is working properly:
main :: IO () main = mapM_ print $ part 6