We're a place where coders share, stay up-to-date and grow their careers.

I have come up with this

sumPair :: Num a => (a, a) -> a sumPair (x, y) = x + y isMoreThanOnce :: Eq a => a -> [a] -> Bool isMoreThanOnce x xs = (>1).length.(filter (==x)) $ xs createPairs :: (Num a, Eq a) => [a] -> a -> [(a, a)] createPairs xs x | isMoreThanOnce x xs = tuples.addX.whithoutX $ xs | otherwise = tuples.whithoutX $ xs where whithoutX = filter (/=x) tuples = map ((,) x) addX = (x:) createAllPairs :: (Num a, Eq a) => [a] -> [(a, a)] createAllPairs xs = flatmap (createPairs xs) xs problem :: (Num a, Eq a) => a -> [a] -> Bool problem k xs = elem k.map sumPair.createAllPairs $ xs

Here's another solution in Haskell

import qualified Data.Set as Set solve :: Integral a => a -> [a] -> Bool solve = solve' Set.empty solve' :: Integral a => Set.Set a -> a -> [a] -> Bool solve' _ _ [] = False solve' possibleAddends targetSum (x:xs) | Set.member x possibleAddends = True | otherwise = solve' (Set.insert addend possibleAddends) targetSum xs where addend = targetSum - x

## re: Daily Coding Problem #1 VIEW POST

FULL DISCUSSIONI have come up with this

Here's another solution in Haskell