f5f832f3522fadea80afbd152517eb1f59927d60
[advent-of-code-17.git] / adventofcode1701 / app / advent01.hs
1 {-# LANGUAGE NegativeLiterals #-}
2
3 module Main(main) where
4
5 import Data.Char (digitToInt)
6
7 main :: IO ()
8 main = do
9 digits <- readFile "data/advent01.txt"
10 print $ part1 digits
11 print $ part2 digits
12
13 part1 :: String -> Int
14 part1 = solve 1
15
16 part2 :: String -> Int
17 part2 digits = solve (length digits `div` 2) digits
18
19 -- Verbose version
20 -- solve n digits = sum $ map (digitToInt . fst)
21 -- $ filter (uncurry (==))
22 -- $ zip digits
23 -- $ drop n
24 -- $ cycle digits
25
26 solve :: Int -> String -> Int
27 solve n digits = sum $ zipWith (\a b -> if a == b then digitToInt a else 0) digits
28 $ drop n
29 $ cycle digits