1
0
Fork 0
adventofcode/src/Day01.hs

22 lines
490 B
Haskell

module Day01 (main) where
import Data.IntSet (empty, insert, member)
parseChanges :: String -> [Int]
parseChanges = map (read . dropWhile (== '+')) . lines
part1 :: [Int] -> Int
part1 = sum
part2 :: [Int] -> Int
part2 = dupl empty . scanl1 (+) . cycle
where dupl s (f:fs)
| member f s = f
| otherwise = dupl (insert f s) fs
main :: IO ()
main = do
changes <- parseChanges <$> readFile "input/01.txt"
print $ part1 changes
print $ part2 changes