aboutsummaryrefslogtreecommitdiff
path: root/2020/09a.hs
blob: 4ee18f2b0f1bb0c95d0666dfcedc49e0da83c407 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
module Day9A where

import System.Environment (getArgs)

potentialSum :: [Int] -> Int -> [(Int, Int)]
potentialSum xs t = filter ((== t) . uncurry (+)) [(x, y) | x <- xs, y <- xs, x /= y]

mapSumPrev :: [Int] -> Int -> [[(Int, Int)]]
mapSumPrev xs l = [potentialSum (take l $ drop (i - l) xs) v | (i, v) <- zip [25..] (drop l xs)]

numsFromFile :: String -> IO [Int]
numsFromFile p = do
                    c <- readFile p;
                    return $ map read $ lines c; 

main :: IO ()
main = do 
        args <- getArgs;
        xs <- numsFromFile $ head args;

        let unob = head $ filter (null . fst) $ zip (mapSumPrev xs 25) [25..];
        let unob_n = xs !! snd unob;
        putStrLn $ "No way to sum up to " ++ show unob_n;
        return ();