diff --git a/2020/01/part1.hs b/2020/01/part1.hs index 1bc7777..fdf6dc6 100755 --- a/2020/01/part1.hs +++ b/2020/01/part1.hs @@ -3,22 +3,14 @@ import Data.List import Data.Maybe -main :: IO () -main = - do - input <- getInput +main = interact findSolution - let answer = uncurry (*) $ fromJust $ find isSolutionPair $ pairs input +findSolution = show . product . findJust isSolutionPair . pairs . parseInput - putStrLn $ show answer +parseInput = map read . lines -getInput :: IO [Int] -getInput = fmap (map read . lines) getContents +pairs = sequence . replicate 2 -pairs :: [a] -> [(a, a)] -pairs [] = [] -pairs [_] = [] -pairs (x:xs) = [(x, y) | y <- xs] ++ pairs xs +isSolutionPair = (2020 ==) . sum -isSolutionPair :: (Int, Int) -> Bool -isSolutionPair (a, b) = a + b == 2020 +findJust f = fromJust . find f