Tidying, and adding problems
[advent-of-code-20.git] / advent05 / src / advent05.hs
1 -- import Debug.Trace
2
3 import Numeric
4 import Data.List
5
6 main :: IO ()
7 main =
8 do text <- readFile "data/advent05.txt"
9 let passes = lines text
10 print $ part1 passes
11 print $ part2 passes
12
13 part1 = maximum . map convert
14
15 part2 passes = head $ expecteds \\ ns
16 where ns = map convert passes
17 highest = maximum ns
18 lowest = minimum ns
19 expecteds = [lowest..highest]
20
21 directionToInt :: Char -> Int
22 directionToInt dir = if dir `elem` "BR" then 1 else 0
23
24 convert :: String -> Int
25 convert = fst . head . readInt 2 (`elem` "FBLR") directionToInt