X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=src%2Fadvent01%2Fadvent01verbose.hs;fp=src%2Fadvent01%2Fadvent01verbose.hs;h=a09046c5365a74185fb4ad1517448e4b38572b34;hb=0d01bb3582b4b7f5ee86ff37a8136161c5c061c3;hp=0000000000000000000000000000000000000000;hpb=89bf7fd456e520c5483fa138b5a49f07f2703df4;p=advent-of-code-17.git diff --git a/src/advent01/advent01verbose.hs b/src/advent01/advent01verbose.hs new file mode 100644 index 0000000..a09046c --- /dev/null +++ b/src/advent01/advent01verbose.hs @@ -0,0 +1,32 @@ +{-# LANGUAGE NegativeLiterals #-} + +module Main(main) where + +import Data.List (tails) + +main :: IO () +main = do + digits <- readFile "data/advent01.txt" + print $ part1 digits + print $ part2 digits + +part1 :: String -> Integer +part1 = sum_valid_pairs . part1_extract + +part2 :: String -> Integer +part2 = sum_valid_pairs . part2_extract + +part1_extract :: String -> [String] +part1_extract digits = map (take 2) $ tails (digits ++ [head digits]) + +part2_extract :: String -> [String] +part2_extract digits = map (\ds -> (take 1 ds) ++ (take 1 $ drop offset ds)) + $ take (length digits) + $ tails (digits ++ digits) + where offset = length digits `div` 2 + +sum_valid_pairs :: [String] -> Integer +sum_valid_pairs possibles = sum $ map (read . take 1) + $ filter (\(x:y:_) -> x == y) + $ filter (\p -> length p == 2) possibles + \ No newline at end of file