X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=src%2Fadvent01%2Fadvent01.hs;fp=src%2Fadvent01%2Fadvent01.hs;h=f5f832f3522fadea80afbd152517eb1f59927d60;hb=0d01bb3582b4b7f5ee86ff37a8136161c5c061c3;hp=0000000000000000000000000000000000000000;hpb=89bf7fd456e520c5483fa138b5a49f07f2703df4;p=advent-of-code-17.git diff --git a/src/advent01/advent01.hs b/src/advent01/advent01.hs new file mode 100644 index 0000000..f5f832f --- /dev/null +++ b/src/advent01/advent01.hs @@ -0,0 +1,29 @@ +{-# LANGUAGE NegativeLiterals #-} + +module Main(main) where + +import Data.Char (digitToInt) + +main :: IO () +main = do + digits <- readFile "data/advent01.txt" + print $ part1 digits + print $ part2 digits + +part1 :: String -> Int +part1 = solve 1 + +part2 :: String -> Int +part2 digits = solve (length digits `div` 2) digits + +-- Verbose version +-- solve n digits = sum $ map (digitToInt . fst) +-- $ filter (uncurry (==)) +-- $ zip digits +-- $ drop n +-- $ cycle digits + +solve :: Int -> String -> Int +solve n digits = sum $ zipWith (\a b -> if a == b then digitToInt a else 0) digits + $ drop n + $ cycle digits