diff --git a/AdventOfCode2020.cabal b/AdventOfCode2020.cabal index da43133..05ad01d 100644 --- a/AdventOfCode2020.cabal +++ b/AdventOfCode2020.cabal @@ -17,7 +17,7 @@ maintainer: gael@depreeuw.dev extra-source-files: CHANGELOG.md, README.md library - exposed-modules: Day1, Day2, Day3, Day4 + exposed-modules: Day1, Day2, Day3, Day4, Day5 -- other-modules: -- other-extensions: build-depends: base ^>=4.13.0.0 diff --git a/Main.hs b/Main.hs index 8dee98f..fcea873 100644 --- a/Main.hs +++ b/Main.hs @@ -4,6 +4,7 @@ import Day1 (day1) import Day2 (day2) import Day3 (day3) import Day4 (day4) +import Day5 (day5) main :: IO () main = do @@ -11,3 +12,4 @@ main = do day2 day3 day4 + day5 diff --git a/input/day5 b/input/day5 new file mode 100644 index 0000000..1c8bac0 --- /dev/null +++ b/input/day5 @@ -0,0 +1,900 @@ +BFFFFBBRRL +FBBBBBBRRL +BBBFFBBRRR +BFFFFFFLRL +FBFFBFBRRR +BFFBFFBLRR +FFBBBFBRRR +BBFBBBBLRL +FBFFBFFLRL +BFFFBBFLLL +FBFFFFFRLL +FBFFBFFRRL +BBBFBFBRRL +BFFBFFFLLL +FBFFFFFLLL +BFFFBBFLLR +FBBFFBFRRR +FFBBFBFLRR +FFFBBBFLRL +FFBFBBBRRL +FBFBBBBLLR +BBBFFFBLLR +FBBBFFFLLL +FFBFBFFRLR +FBFBBBFLLR +BBBFBBBRRR +FBBFFFBLRR +FBBFFFBLLR +BFBFFBBLLL +BBFFFFFRLR +BBFBBFFRRL +BBBBFBFRRR +BFFFFBFRRR +FBFFFFBLLR +FFBFBFBRLL +FBFFFFBLRL +BFFFFFFLLL +BFBBFBBLRR +FFFBBBBRRL +BBFFFFBLRL +FFFBBFBRLL +BBBBFFBRRR +FBBBBBFRLL +BFFBFBFRLL +FBFFBFFLLL +FBBBBBBRLL +FFFBBBFRRL +BBFFFFBRRR +FFBFBFFLLR +FBBFFFFRRR +BFFFFFBRRL +BBFFFBBRLR +BBBBFFFRLL +BFFFFBFRLR +BFBBBBFLRL +FFBFBFFRRR +BFBBFFBLRR +FFBBBBBRRR +FBBFBFFLRL +FFBBFBBLLR +BBFFBFBRRL +BFBFFBFLLL +BFFBBFBRRR +FBFBBBFLRR +FBBBBBBRLR +BFBBBFBRRL +FBFBFBBRLR +FBBBBFFLRR +BBFBBFBLLL +BFBBBBFLRR +FFBBBBBRLL +FFBFFBFRRR +BBFFBFBRRR +FBFBFFBRRL +FFBFFFFRLL +BFBFBFFLRL +FBFBFFBRLR +BFFFBFFLLL +BFBBFBFLRR +BFBBBBFRLR +FBFFFBFRRR +BFBFFBFLRR +BFFFFBBRLR +BBFFFBBRLL +FBBBFFFRRR +BFBFFFFLLR +FFFBBBBLLL +FBBFBFBLLR +FFBBFBFRLL +FBBBFBFLLL +BFFBFBBRRL +BFFFFFFRLR +BFFBBBFLRR +BFBFBBBLRL +BFBBFFFRLL +BBFFBFFLLL +BBFFBBBLRL +FBBBFFFRLL +FBFFFFBRRR +FFBBBBBLRL +FBBFFFBLLL +FBFFFFBLRR +BBFFBBFRRL +BFBFBFFRLL +FFBBFBBRLR +FFBBFFBLLR +FBBFBFFRLR +BBFFBFBLRL +BBFBFFFRLL +FBBFBBBLRR +FFBFFFBRRL +BBFFBBFLRR +BFFBFFBRRL +BFBFBFBRLR +BBBFFFBRLR +BBBFFFFLLR +FBFBBBFRLL +FBBFBFBRLL +FFBBFBFLLL +BFBBBFBLLR +BFBBBFBRLL +BBFBBFBLRR +BFBBBFFLRL +BFBBBBFLLR +BBBFFBFLRL +BFBFBBBLLR +BFFFBBFRRL +FBBBFBBLLL +BBFFFFBLLR +FBBBBBFLRR +BBFFBBFRLR +BFBFFBBRLL +BFFBBFFLRL +BFFBBFBRRL +BBBFFBFRRR +BBBFBBBLRL +BBFFBFBLLR +FFBFBFBLRR +FBBBFBBLRL +BFBBBFFRRL +FBFFBFBLLR +BFBFBBBRLL +FFFBBBFRLR +BBFBBBBLLR +FBBFBBBLLL +FFBBFBFLRL +BFFFBFFLLR +BFBFFFBRRL +BFFBFFFLRR +BFFFFFBLLR +FBBBBFFLLR +FFBFFBFRRL +BBBBFBFLLL +BBBFFFBLRL +FBFFFBBLLR +FFFBBFBRRL +BBFBFFBRRL +FFBBFBBRRR +BBBFFBBLRL +BBFFFBFRRR +FBBBBBFRRR +FFFBFBBRLR +FBBBFBFRLR +FBFBFBBRLL +BFBBBBFRRR +FFBBBBBLRR +BFBFBBBRRL +FBBFFBFLRL +FBFFBFBRLR +FBBBFBBRRR +FBFBFBBRRL +FBBBBBFRRL +FFBBFBFLLR +FBFFBBFRRR +BFBBBBBRRL +FFBFBFFLRR +BFFFFBBLRL +FFBBFFBRRR +BFFBBFFRLR +BFFFBBBRLR +BBFBFFFRRL +BBFBFBFRLR +BBFBBBFRRR +BFBFBFFLRR +FFBFBFBLLL +BFFFFFFRLL +FFBBFFFLLR +FBBBFFBRLL +BFBFFBFLLR +BFBBFBFLLL +FBFFFBFLLL +FBBFFBBLRL +BBFFFFBRRL +BBBFFBFRRL +FBFBFFBRRR +FBFBBFBRRR +BBFFBFBLLL +FFBBBFBRRL +BFFFBBBLLR +FBBBBBFLLL +BFFBFFFLRL +FBBFBBBRRR +BFFFFBFLLR +FBBBBBFLLR +FBBBFBFLLR +FFBBBFBRLR +BFBBBBBRLL +FFBFBBBRRR +BBBFBFFLRR +FFBFBFFRRL +BBFFBBBRLR +FBBBFBFLRR +FFBFFFFLLR +FBFFFBFLRR +BBBFBBFRRL +BBBFBFBLRR +BBFFFBBLLR +BBFFFFBRLR +FBBFFBBRLR +FFBFFFBLLR +BBFBFBFRRR +BBBFFFFRLL +BFBBFFFRRL +BFBBFBBLRL +BFFBBBFRLL +BBBFFBBRLL +FFBBFFFLRR +BFFFFFBRRR +FBFBBBFLRL +BBFFBBBRLL +BBFBFBBLLL +BFFBBBFLLR +BFFFBFBLRR +BBBBFBFRLL +BFBBBFBLLL +FBFBFBBLRR +BBFFBFFRLL +BFFFBBBLLL +BBBBFFFRRL +BFFBBBBLRR +BBFBBFBRRR +BBFBFFBLLR +BFFBBBFRRL +FBBFBFBRRR +BFFBFBFRRR +BBFFFBBRRL +FBFBFFFLLL +FBFBBFBLRR +FFBBFBBRLL +BBFFFFBLLL +BFFFFBFRLL +FBFFBBFLLR +BBBFFFBLLL +BBBFFBBLLR +FFBBBBFLRL +FBBFBFFRLL +BBFBFFBLRR +BBFFBFFRRR +FBFFBBBLLR +BFFBFBFLLL +BBFBBBFRLR +FFBBBBFLRR +FBFBBFBLRL +FFBBBFBLRR +FFFBFBBRRL +BBFFFBBLRR +BBFFBBBLLR +FBFBFFFRRL +FBBBBBBLRR +FFBBBBBRLR +FFBBFFBLLL +BFBBBBBRLR +BBFFFBBLLL +FBBBBFBRRR +BBFBFFFLLL +BBFBBFFRLL +BFFFFFBLRR +FBFBBFBLLR +FBFBBBFRRR +FFBFFBFLLL +BFFBFFBRLR +BFFBBBFRLR +FBFBBBBLLL +BBBFFFBRLL +FBBFFFFRLL +BFBFFBBLRR +FFFBBBFLLR +FFBBBFFLLL +BFBBFFBRRR +BBBFFBFLLL +FFFBBBFLLL +FBBFFFBRRL +FFFBBFBRLR +FBBBFBFRRL +FFBBBFBRLL +FBFFFFFRRR +BBFBFBBLLR +FBFFBBBRLL +BBFBBBBRRL +BFBFFBFRRL +FFFBBBBLRR +BFFFBFFLRL +FBFBFBBLLL +FFBFBFBLLR +FFBBBBFRRL +BBFFBFFRRL +FBFFBBFLRL +BFFBBFBLLR +BBBBFBBLLR +FBFBBBBRLL +FFFBBBBLRL +FBFFFFBLLL +BFFFFBFLRR +BBFBFFBLLL +FFBFBFBRLR +FBBBFFFLRR +FBFBFFFLRL +BBFBFBFLRL +FBBFFBFRLR +FBFFBBBLLL +BBFFFFFLLL +FBBBFFBRRR +FFBBBBFLLL +FBBFBFFLLR +BFBBFFFLLL +BFFBBBBRRL +BBFBBBFRRL +BBBFFBBRLR +BFBBFBBLLL +FBFBBFFRRL +FBBFFBBRLL +FBBFFBBLLL +BFBBFBFRRR +FBFFFFBRRL +FFBBBBBLLR +FBFFFFFRRL +BBBFBBFLRL +FBFBFBBLRL +BFFBFBBRLR +BFFBBFBRLL +BBBFBFFRRL +FBFFBFFRLR +BFFFBFBRLR +BBFFFBFRLL +BFBFFBBRLR +BFFFBFBLLL +FBFFBFFLLR +BFFFFBFLRL +FFBFBBFLRL +FBFFFFFLLR +BFFBBBFRRR +BBFFFFFRRL +FBFFFBBLRL +FFFBBBFRRR +FBFFBBFRLL +BBBBFFBRRL +FBBBBFBLLL +BBBBFBBLRL +BFFFBFBRRR +BFBBBBFRRL +FBBBBFBRLL +FFFBBFBRRR +BFBBBBBLRR +BFBFBFFRRL +BFBBFFBRLL +BBFFFBBRRR +FFBBBFFLRL +BFBBFFFRRR +FBFBFBFLLR +BFBFFFBLRR +BBBFFBFRLR +BFBBFFFRLR +FFBFBFBRRR +BBBBFBFRRL +BBFFBFBRLR +FBBFFFFLLR +BBFBBBBRLR +FFBBBBBRRL +BFFBFFBLLL +BBBFBBBRLL +FBBBBFFRLL +BFFBFBBLLR +BFFFBFBRLL +BFFFFBBLLR +BBBFBFFLLL +BBFFFFFRLL +BFBFBFBLLR +FBFBFBFLRL +BFBBFFBLRL +BBFBFBBRRL +FFFBFBBRLL +BFFFFBFRRL +BBBBFFFRLR +FBBBFFBRLR +FBFFBFBLRR +BFBFBFFRRR +FBFFFFBRLR +FBFBBBBRLR +FBBBFBBLRR +BBBBFFFLRR +BFBBFBFRLR +BFBFBBBLRR +BFBBFBBRRR +FBBFFBFRLL +BBBFBBFLLR +FBBFBBFLRR +FBBFFBBRRL +BBFBFBBRLR +FBFBBBBRRR +FFBBFFFRLL +BFBBBFFLLL +BFBFBFBRLL +BFFBFFBRRR +FBBBFFFLRL +FFFBBFFRRL +BBBFBFBLRL +BBBFBBBRLR +BBFFFFFRRR +BBFBBBFLRL +FFBBFFFLRL +BFFBBBBLLL +FBBBBBBLRL +BBBFBFFRLR +FBFFBFBLRL +BFBFFFFLRL +FFBFFFFLRR +BBBFFBBRRL +FFBBFBFRRR +FBBBFBFRLL +FFFBBFFLLR +BBFBBBFLRR +BBFFBFFRLR +BBBFFFBRRL +BFFFBBBRRL +BBFFBBBRRL +BBBFFFFRRR +BBBBFBBRLR +FFBBBBFRRR +BBBBFBFLRR +FFBFBBBRLL +BBBFBFFRLL +FBBBFBFLRL +BFFFBBBLRL +FBFFFBBRLR +BBFBBFBLLR +FBBBBFBLRR +BFBBFBFLLR +FFBFFBBLRL +FBFBFBFRRR +BBFBBFBLRL +BBFBBBFRLL +BFBFFFBRLL +BBBBFBFLRL +FBFBBFBRLR +BBFBFFBRLR +FBBFBFFLRR +BFFBFBBLRR +FBBBBFFRLR +FFBFFBBRRL +BBBBFFFRRR +BFFFFBBRRR +FBBFBFFLLL +FBFBBFFRLL +BFFFBFFRLR +BBBFFBBLRR +BBFFFBFRRL +FFFBBFFLRR +FBFBFFBLLR +FBBFFFBRRR +BFBFBBFLRR +BBBFFFFLRL +BBBFFBFLRR +BBFFBBFLRL +BBBFBBFLRR +BBBFBBFRLR +BBBFBFBRLR +FFFBBFFRLL +FFBBFBBLLL +BFBFFBFLRL +FBBFBBFLLR +BBFBFBBRLL +FBBBBFBLRL +BFFBBBBLRL +FBBFBFBRRL +FBFBFBFRRL +FFBFFBFLRR +FBFBFFFRLL +BFFFBFBLLR +BBFBFBBLRL +FFBFFBBRRR +BBFBBBFLLL +BFFBBBBRLL +BFBBBBFRLL +BFBBBFBLRR +BBBBFBFLLR +BFBFFFBLLL +FBBBBFFRRL +FFBBBFFRRL +FBFFBFFRLL +FFBBFBFRRL +FFBFBBFLRR +BBFBFBBRRR +BBBFFBFRLL +BBBFBFBRRR +FBFFBBFRRL +FBBBFFBLLR +BBFFBFFLRR +BFBFBFBLLL +BBBBFFFLRL +FFFBFBBLRL +FBBBBBBLLL +BFBFBFBLRL +BFFBFBBLRL +FBFBFBFRLR +FBFBBFFLRL +BBFFFBFLRL +FFBBBFBLLL +FBBFFBBLRR +FFBFFFFRRR +BFBFFBBLLR +FBFFBBBRRR +FFFBBBFLRR +BFBFFBFRLR +BFBBFFBLLR +FBFFFFBRLL +BFBBBBFLLL +FFBFBBFRLR +BFFBBFBLRL +BFBBFBBRLR +BBBFBFBRLL +BBBFFFFRLR +FFBFFFFRRL +FFFBBFFRRR +FBBBFBBLLR +FFBFBFFLRL +BFBFBBBRLR +FFBBFFFRLR +BFBBBFBRLR +BFBFFFBLLR +BFFFBBBRRR +FBFFFBFRLR +BBFBBBFLLR +BFBFBFBLRR +BFBBFFFLRL +BFFBFFFLLR +BBFBFBFLLL +FFBFFBBLLL +FBBBFBBRRL +FBFFFFFRLR +FBFBFFFLRR +BFBBBBBRRR +BFBFBBFRLL +FBBFBBBRLR +BFFBFFBRLL +FFFBBBBRLR +FBFBFFFRRR +FBBFBBFLRL +BFFBFFFRRL +FFFBBFFRLR +FBBBFBBRLR +BBFBFBBLRR +BBFBFFFLRL +FFBFFFBLRL +FFBBFBFRLR +BFBBFFFLRR +BBFBBBBRRR +BBBFBBBLLR +BBFBBFFRRR +BBFFBFBLRR +FBBFBFFRRR +BFFBBBBRLR +BBFBFBFLLR +FFBFBFFLLL +BFFBBBFLLL +FFBBFFBRRL +BFBBBFFRLR +FBFBFFBRLL +BFFFFFFRRL +BBBFBBFRRR +BFBBFFBLLL +FBBFFFBLRL +FBBBFFFRLR +FBBBBBFLRL +BFBBFFFLLR +BBFBFBFRLL +BFBFBFFLLL +FBBBBBBLLR +FFBFFFBLLL +BFFBBFFRRL +BFBFBBFLLL +BFFBFFBLRL +BFFFFFBRLR +BBFBFFFRLR +BFBFFBFRRR +FBFBBBFRRL +FFFBBFFLRL +BFFBBBFLRL +FBFFFFFLRL +BFFFFBBLLL +FFBBBFFLLR +FFFBFBBRRR +BFBFBFBRRR +FBBBFFBLRR +BFFBFFFRRR +BFBBFBBRLL +BBFFFFBLRR +FBFBBFBLLL +BFBBFFBRLR +BFFBFBFLLR +BFFBBBBRRR +FFBBBBFRLR +BFBBBFFRLL +BFBFBBFLRL +FFFBBFBLRL +BFFFBFFLRR +BFFFBBBRLL +BFFBFFBLLR +BFFFFBBLRR +FBBFFBBRRR +BFBFFFFRRR +BBBFFFFLLL +FFBBBBFLLR +BBBBFFBLRL +BBFFFBBLRL +BBBFBBBRRL +BFFBBFFLLL +FFBFBBFLLR +FFBFFBBLRR +FBBFFFFRRL +FBFFBBFLRR +FBBFBFBRLR +BFBBFBBLLR +FFBFBBFRLL +BFFBBFFRLL +BBBBFFFLLR +FFFBBFFLLL +BFBFBBFRRL +FBFBBFFLLL +FFBBBFFLRR +FBBFBFBLLL +FBFBFBFLRR +BBBFBFFLLR +FBFFFBFLRL +BBBBFFBRLR +BFBFBBFRLR +BFBBFBFRRL +BFBBBFFLLR +BBFBFBFLRR +BFFBFBBRRR +FBBFBBFRLL +FFBFFFBLRR +FBBBFFFRRL +BFFBFFFRLL +FBBFFFBRLL +FFBFBBBLRR +FFBFFFFRLR +BBBBFBBRLL +BFFBFBFRLR +FFBBBFBLLR +FBBBFFBLLL +BFBFBFBRRL +FFBFBBBLRL +FFBBBFBLRL +FBFBFFBLRR +FFBFFFFLLL +FBBFBBFLLL +FBFFFBBRRR +FBBFFFFLRL +FFBBBBFRLL +FBFFFBBRRL +BFFBFBFLRR +FBFFBFFLRR +BBBFBFBLLL +FFBFFBFRLL +FBFBBFFRLR +BFFBBFFLLR +FFBBFFFRRL +BBFFBBFRLL +BFFFFFBLRL +FBBFFBFRRL +FBBFBBFRRR +FFBFFBBRLR +BBFBFFFRRR +FFBFFFBRLL +FBFFFBBRLL +BBFBBFBRLR +FBFBBFFLRR +FBFBFBFRLL +BFBBBBBLLL +FBBBBFBRLR +BFFBBFBRLR +BBFFFBFLLL +FBFFFBBLRR +FFBBFFBRLR +FBBBFBBRLL +FBBBFFFLLR +BFBBBFBRRR +BBBBFFBRLL +BBFFFFFLRR +BBFBBFFLLL +FFBFBBFLLL +FFBBFBBLRL +BFFFBBFLRL +BFFBFBBRLL +BFBBFBFRLL +FBFBFBFLLL +FBFFBFBRLL +FFBFBBFRRL +FFFBBBBLLR +BBBBFBBLRR +BBFBBBBLRR +BFBBBBBLLR +FBFFBFFRRR +BBFBFFBRRR +BBFFBFBRLL +FBFFBBFLLL +FBFBBFFRRR +FBBFFBFLRR +BFFBFBFRRL +BFFFBFFRRL +BBBFBFBLLR +BFFFFFBRLL +BFBFFFFLLL +FFBBFFBLRL +FBBBBFBLLR +FBBFFFBRLR +BBFBFFBLRL +FBFFBBBRRL +BFFFBBFRRR +BFFFBFFRRR +FBBBBFFRRR +BFBFBBFLLR +BBFFFBFLLR +FBBFBBBLRL +FBBFBFBLRL +BBFFBFFLLR +FFBFBBFRRR +BBFBBFFRLR +BBBBFFFLLL +BBFBBFFLRL +FFFBBFBLLR +BFFFBFBRRL +FBBBBFBRRL +BBFFBBBLRR +BFBBBBBLRL +FBFFBBBLRR +BBFBBBBLLL +FFBFBBBLLR +FBFBFBBRRR +FBFFFBFLLR +FBFFFFFLRR +BBFBBFBRLL +FBFBBFBRLL +BFFBBFFLRR +FBBFFBFLLR +FBBBFBFRRR +BFFFBFBLRL +FBBFFBBLLR +BBFFBBBRRR +FBFFBBBRLR +FBFFFBBLLL +BFBFFBFRLL +BBFFBFFLRL +FBFFFBFRRL +FBBFFFFLRR +BBBBFFBLLL +FBBFFFFRLR +BFBBBFFRRR +FBBBFFBRRL +BBFBBFFLLR +BFBFBFFLLR +BBFFFFFLRL +BFBFBBBLLL +FFFBBBBRRR +BBBFFFBLRR +BFFFFFFRRR +BFBBBFBLRL +FBFFBBFRLR +BFBFFFBRRR +BBBFFFBRRR +FBBFFBFLLL +FBBFFFFLLL +BBFFBBFLLL +FFBFFFBRRR +BFBFFBBRRR +BBFBFFFLRR +FBFBBBFLLL +FFBBBFFRLR +BBFBBFBRRL +BBBFBBBLLL +FFBFFFFLRL +FBFBBBBLRR +FBFBBBBRRL +FBFBBBBLRL +FBFBFFFRLR +FBBFBBBRLL +BBFBBBBRLL +BFBFBBBRRR +FBFBBFFLLR +FFBFBFBLRL +FFBBFBBRRL +BBBFBBFRLL +FBBFBFBLRR +FFFBFBBLLR +BFBBBFFLRR +FFBFBBBLLL +BBBFFFFLRR +FFFBBFBLLL +FFBFFBFLRL +FBBFBFFRRL +FBFBFFBLRL +BBBFFBBLLL +FFFBBBFRLL +FFBFBBBRLR +BBBFBFFRRR +FBBFBBFRRL +BFFFBBFLRR +BFFFBBBLRR +FFBBFFFLLL +BBBFFFFRRL +BFFBFBFLRL +BBBFBFFLRL +BFBFFFFRLR +BBFFBBFLLR +BFBBFBFLRL +BFFFFFFLRR +FBFBBFBRRL +FFBFFBBRLL +BFBFFFFRRL +FBFBFBBLLR +BBFBFBFRRL +FBFBBBFRLR +BBBBFFBLLR +BBFBFFBRLL +FBBBBFFLRL +FFBFBFFRLL +BFBFFFFRLL +BBFFBBBLLL +FFBFFBFRLR +FFBBFFBLRR +BFBBFFBRRL +FBBBFFBLRL +FBBFBBFRLR +BFBFFFFLRR +BFBFBBFRRR +BBFBBFFLRR +FFBFFBBLLR +BBBBFFBLRR +FFBBFFBRLL +BBBBFBBLLL +BFFFFFBLLL +BBFBFFFLLR +BBBBFBFRLR +FFFBFBBLRR +BFBBFBBRRL +FBFBFFFLLR +BFFBBFBLRR +BFFFFBBRLL +BBFFFBFLRR +FFBFFBFLLR +BFBFFBBRRL +FBBBBFFLLL +BFBFBFFRLR +FBBBBBFRLR +FBFFBFBRRL +FBFFBFBLLL +FBBFBBBRRL +BFBFFFBRLR +BFBFFFBLRL +FBFFBBBLRL +BBBFBBBLRR +FFBBFBBLRR +FBBBBBBRRR +BFFFFFFLLR +BFFFBBFRLL +FBBFBBBLLR +FFBBBFFRRR +FBFFFBFRLL +BBFFFFBRLL +BFFBFFFRLR +FFFBBBBRLL +FFBFBFBRRL +FFBBBBBLLL +FBFBFFBLLL +BBFFFFFLLR +BFFBBFFRRR +BFFFBBFRLR +BFFBFBBLLL +FFBFFFBRLR +FFBBFFFRRR +BBFFFBFRLR +FFFBBFBLRR +BFFBBBBLLR +BFBFFBBLRL +BFFFFBFLLL +BBBFFBFLLR +FFBBBFFRLL +BFFBBFBLLL +BBBFBBFLLL +BBFFBBFRRR diff --git a/src/Day5.hs b/src/Day5.hs new file mode 100644 index 0000000..80f07b7 --- /dev/null +++ b/src/Day5.hs @@ -0,0 +1,30 @@ +module Day5 (day5) where + +import Data.List (sort, (\\)) + +getRow :: String -> Integer +getRow = snd . foldr go (1, 0) + where + go 'F' (m, s) = (m * 2, s) + go 'B' (m, s) = (m * 2, s + m) + go _ _ = error "not possible" + +getCol :: String -> Integer +getCol = snd . foldr go (1, 0) + where + go 'L' (m, s) = (m * 2, s) + go 'R' (m, s) = (m * 2, s + m) + go _ _ = error "not possible" + +getSeat :: String -> (Integer, Integer) +getSeat s = let (row, col) = take 3 <$> splitAt 7 s in (getRow row, getCol col) + +day5 :: IO () +day5 = do + r <- readFile "./input/day5" + let m = lines r + putStr "[Day 5-1] max id: " + let ids = sort $ map ((\(a, b) -> 8 * a + b) . getSeat) m + print . maximum $ ids + putStr "[Day 5-2] my id: " + print . head $ (enumFrom (head ids) \\ ids) \ No newline at end of file