X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=adventofcode1701%2Fapp%2Fadvent01verbose.hs;fp=adventofcode1701%2Fapp%2Fadvent01verbose.hs;h=a09046c5365a74185fb4ad1517448e4b38572b34;hb=1c73a76288c91ef6b410b2034bc324b60eb9a827;hp=0000000000000000000000000000000000000000;hpb=765da598a39a2c2b93102c182272b5546f4b6996;p=advent-of-code-17.git diff --git a/adventofcode1701/app/advent01verbose.hs b/adventofcode1701/app/advent01verbose.hs new file mode 100644 index 0000000..a09046c --- /dev/null +++ b/adventofcode1701/app/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