From f9ea5815ffda94d48cda913e4014c44392dc175f Mon Sep 17 00:00:00 2001 From: shu Date: Thu, 17 Dec 2020 19:19:48 +0100 Subject: [PATCH] Day 5 --- 2020/day05/day05.hs | 18 + 2020/day05/input | 774 +++++++++++++++++++++++++++++++++++++++++++ 2020/day05/testinput | 3 + 3 files changed, 795 insertions(+) create mode 100644 2020/day05/day05.hs create mode 100644 2020/day05/input create mode 100644 2020/day05/testinput diff --git a/2020/day05/day05.hs b/2020/day05/day05.hs new file mode 100644 index 0000000..bb26c25 --- /dev/null +++ b/2020/day05/day05.hs @@ -0,0 +1,18 @@ +import Control.Lens +import Data.List +import Control.Monad +import Data.Ord + +main :: IO () +main = do + input <- lines <$> readFile "input" + print $ last $ seatList input + print $ minimumBy (comparing (uncurry (-)) ) $ ap zip tail $ seatList input + +seatList :: [String] -> [Int] +seatList = sort . map ((uncurry (+) . (_2 *~ 8)) . parseSeat) + +parseSeat :: String -> (Int,Int) +parseSeat line = (parseOn 'R' cols,parseOn 'B' rows) + where (cols,rows) = splitAt 3 (reverse line) + parseOn c = sum . map (round . (**) 2 . fst) . filter (\(_,x)->x==c) . zip [0..] diff --git a/2020/day05/input b/2020/day05/input new file mode 100644 index 0000000..6041632 --- /dev/null +++ b/2020/day05/input @@ -0,0 +1,774 @@ +FFFBFBFLRR +FFBBFFFRLL +FBFBFFBRLR +FFFBBFBRRL +BFFFBBFRRL +FFBFBFFLLR +FBFBBFFRLL +FFBBFBBLLL +BFFFBBFLLR +FBBFFBBRLR +FBFBBBBLLL +BFFBBBFLLR +BBFFBFBLRR +FBBBFFBRRL +FFFBFBBLRL +FFBFBFBRLR +FBBBBFFRRL +FBBBBFBLLR +BFBBBBFRRR +BFBFFBBLRL +FBBFBBFRLL +FFBBBFBRLR +FBBFFFBRLL +FBFBBFBLRR +FFFBBBFLLL +FBFFBBFLRL +BFFFBFFLLR +FBFBBBBLRL +FBBFBFFRLR +FBFBBBBRLL +FFBFFBFLLR +BFFBFFBRLL +FBBBBFFLRL +BFFBFBBRLR +FFBFFFFLLR +BBFFBBFRLR +BFBFBBBRRL +BFFBBBBLRR +FFBBBBBRLL +FFFBBFFRLR +BBFFFFBLRL +BFBBFBFRRL +BBFFBBFRRL +FBFFFFBRLR +FBBFBBBRLR +BBFBFFFLLL +BFBFBBBRLL +BFFFFFFLRL +FBFBFBFRRR +BBFFFFFLRR +FFFBBFBLLR +FBFFBFBRLL +BFBBFBFLLR +FFBFBFFLRL +BFBFFBFRRR +FBBBBBFRLR +FBBFFBBLLR +FBFBBFFLRL +FBFFFBFRRL +BFFBFFFLRR +FFBFBFBLRL +FBFFBBBLRR +BFBBFFFLLR +FBFBBBBRLR +FBFFFBBRRL +FFFBBBFRRL +FBBBBBBLRR +FBBBFBBRRL +FBBBFBBRRR +BFFFBFBLRL +FBBBFFBRLR +BFBFFFBRRR +BFBBFBBLRL +BBFFBBFLRR +FFFBFBFLLR +FFBBBBFRRL +BFBFBFFRRR +FBFBBBBRRR +BFFFBFFRLL +BFBBFBBLLL +FBFBFBBRLR +BFFFBFBRLL +FFBBFFBRLL +FBFFBBFRLL +FBFBFFFRRR +FFBFBBBLLL +BBFFBBBLRR +FBBFFBBRLL +BFFFFFBRRL +FBBFFBFLLL +FBFBFBFLRL +BFFFFBBLRL +BFFBBFBRLL +BFBFFBFRRL +BFBFFFFLRR +FBFFFBFRRR +BBFFBBBLLR +FBFBFBFRRL +BFFBFBBLRL +FFFBFBBRLR +BBFFFBFLRL +BFBFFBFLLR +BBFFBFBRRL +FBBFFFBRRL +FFBFFFFLLL +BFBFBFFLLL +BFBFFFBLRR +FBBBFFBLRR +FFBBFFBLLR +BBFFFBBLRR +BBFBFFBLRL +BFFFBBFRLL +FBFFBFFRRR +FFBBBFBLRL +FFBFBFFRRR +BFFFFFFLLR +BFFFFBBRRL +FBFBBBFLRL +BFFFFBFLRL +FBFBBBFRLL +FFBFBFBRRR +FFFBFBBRRR +FBBBFFBRLL +FBFFBBFRLR +FFBFBBFRLR +FBBFFFBLLL +BBFFBBBRLR +FBBFFFFLRR +BBFFFBFRLL +FBBBBBBRLR +BFBBFFBLLR +BFBFBBBLRR +FFBBFBBRLL +FFFBFBBLLL +BFBBBFFRLR +FBFBFFFLRL +BFFBBFBLLR +BFBBFFFLRL +BFBBFFBLRR +FBFFFFBLRL +FBFBFBFLRR +FBBFFFFLRL +FFBFBBBLLR +FBFBFBBRRR +BFBBBBFLRL +BFBFBFBLRL +BFFBFBFLRL +BBFFFFBRRL +FFBFFFBLRR +BBFBFFBRRL +FFBBBFFLRR +BFFBBBBLRL +FBBBFFFLLR +FFFBBBFRLR +BBFBFBFLLR +BFBFBFFRRL +FBFBFFBRRR +FBFFBFFLRL +FFBBFFFLLL +BFFBBFBLLL +BBFFFFFLRL +FFBFBBBRRR +FFBFFBFLLL +FFBBBBFLRL +FFBBFFFRLR +BFBFFFBLLL +FBFFFFFRRR +FBBFFBBLRL +BFFFFBFRRL +BFFFFBFRLR +FFBFBFFRLL +BBFFBFFRRL +FBFFBBBRRR +FFBBBFFRRR +BFFBBBBRLR +FFBBFBBRLR +BFBBFBBRLR +FBFFBBBLLR +BFFFFBBLRR +FBBFBFBRRL +FBBFBFBRLR +FBBBBFFLRR +FBFFFFBLRR +FFBFBBFLLL +FBBFFBBLRR +FBFBFFFLLL +FBFFFBBLRR +FBBFBFFLLL +FBBBFBFRLL +FFBBFBBLRL +BFBFFBBRRR +BFFBBBBLLR +FBFFBFBLRR +FBBBBBBLLR +FBBFBBFLRL +BFBFBFBRLR +FBBFFFFRLR +BFFBFBBLLL +BFBFFFBRLL +BFFBBBBRLL +BFBFBBFLLR +FBFFBFFRLR +BFFBBFBRRR +FBBBFFFLLL +BFFBFBFRRL +FBFFBFFRLL +FFBBBFFLRL +FBFFBFFRRL +BBFFBFBRLR +FBBFBBBRLL +FBFBBFBRRL +FBFBBFFLLR +BFFBFFBLRR +FFBBFBFRRR +BFFBBBFRRL +FFBFBFBRRL +BBFFBFFLLR +FBBBBFFLLR +FBBFBFBLLL +BFBBBBFRLL +FFBBBBFLLL +FBBBFBBRLL +BFFBFBFLLR +FBFFFFFLLR +FBBFBFBRLL +FBFBBBFLLR +FBFBFBBLLL +FFFBBBBLLR +FFBBBBFRRR +FBBFFFBLRL +BBFFBFBLLR +BFBBFFFRLR +BBFBFFBRLL +BFBBBFBLRL +BFBBBFFRRL +FBFBFFBRLL +BBFBFFFLRL +BFBFBFBRRL +BFFFBFFLLL +FBFFFFFLLL +FBFBBBBRRL +FBFFBFBRRL +BFBFBFFRLR +FBFBFFFRRL +BFBBBBFLLR +FBBBBBFLRL +FBBBFFBLLL +FBBBFFFRRL +BBFBFBFRRR +FFBFFBBRRL +FFBFBBFRRR +BBFFFBFLLL +BBFFBFBRRR +BFFBBBFLRR +FBFFFFBRLL +FBFFBBBLLL +FFFBBBFLLR +BBFBFFBLLL +FBFBFBFRLR +BFBFBFBLLL +BBFFFFBRRR +FBBBBFBRRR +FBFFFBBRLR +FFFBBFFLLL +FBBFFBFLRR +BFFFBBBRLL +FBBFBFBLRL +FFBFFFFLRL +FFBFFFBLLR +FBBFBBBRRL +BFBBFBFRLL +FFBBBBBLRR +BFFBBFFLRR +FFBFFFBRRR +BFFFFFFRLL +BFFBFFBRRR +FFFBBBFLRL +FFBFBFBRLL +BBFFBBBRRL +BBFBFFFRRR +BBFBFBFLRL +FBBFBBBLRR +FFBBFBFRLR +BFBFBFBLRR +FFFBBBBRRL +BFFFFBBLLL +FFFBBBFLRR +FFBBFFBRRL +FBFFBFFLRR +FBFFBBFRRL +BFBBFBBRRL +BBFFBFBRLL +FBBFFFFRRL +FFBBFFBRLR +BBFFFFBRLR +BBFBFBFRLL +FBBFBBBRRR +BFFBBBBRRL +BFFBBBBLLL +BFBBFBBRLL +BFFBBBFLRL +FBFFBFBLRL +BFFBBFFLLL +BFBFBBFRLL +FBBFFFBRRR +FFBFFBFLRL +FFBFFFFRLR +BFBBFBBLLR +BFBFBFBRRR +FBBFFFFLLR +FFBBFBBRRL +BFFBFFFRRL +FBFBBBFRRL +FBBFFFFLLL +BFFFFFFRRL +BFBFFFBLLR +BFBBFFBRRR +BFFBFFFLLR +FFBBBFBLLL +BFFBBBFLLL +FBFFFBBRRR +FBBBBBFLLL +BFBFFFFRRL +FFBBFFBRRR +BFBFBFFLLR +FFFBFBBLLR +BFBBFFBLRL +FBFBBFFRRR +BFBBBFFLLR +FBBFFFBLLR +BFFFBBFLRR +BFFFFBBRLR +FBFFFBBLRL +BFBBBFBLRR +FBFFBFBLLR +BFBBFFFRLL +FFBBFBFLLL +FFBFFFBRRL +FFBBFBBLRR +FFBFBBFLRL +FFFBBFFRRR +BFBFFBFLRR +BBFFFFBLRR +FFBFBBFLRR +FFFBBFFRLL +FBBBFBBRLR +BBFFFBBRRL +FFFBFBFRRL +FBBBBBBRRR +FFBBBFBLRR +FBBFBFFLRL +FBBBFFFRRR +FBBFFBBRRR +BFFFFBBRRR +FBBFFBFRLR +BFFBFBFRLR +BFBBBFFLRR +FFBFFBFLRR +BFBFFFBLRL +BFFBFBFRLL +FBBBBFBLLL +BBFBFFFRRL +FFBBFFBLLL +FFBFFBBRLR +FFBBBFBRRL +FFBBFFFLRR +BBFFBFFLRR +BFFFBFFRRL +FBFBBFBRRR +FBFFFBFLRL +BBFBFFBLRR +BFFBFBFRRR +BFFFFFFLLL +FBBBFFBLRL +FBBBFBFRRL +BFFBFFBRLR +BFBBBFFRRR +BFFBFFFRRR +FFFBBBBLLL +FFBBBFBRRR +FFBBFBFLLR +BFBBBFBLLL +FBBFBBBLLL +BBFBFBFLLL +BFBBBFBRRR +BFBFBBFRLR +FBFFBFBRLR +BFFBFFFRLL +BFBBFFBRRL +FFBBFBFLRR +FFBBBFBLLR +BBFBFFFRLR +FFBBFBBLLR +FBFFFBBLLR +FBBFBFBLLR +FFBBFBFRLL +BFFFFFBLLR +BFBFBFBLLR +BFBBFFBLLL +FBBBBFBLRR +BFBBBBFLLL +BFFBBFFLLR +FBFBFFFRLL +FBBBBBFLLR +BBFBFFBLLR +BFBFBFFLRR +FBBBBFFRLR +FFFBFBBRRL +FFFBBFBLLL +BFBBBBFLRR +BFBBBBBLRR +FBBFBBFLLL +BFFFBFBRLR +FBBFBFFLRR +FBFFFBBRLL +BFFFFFBRRR +BFFBBBFRLL +FFBFBFBLLL +BFBBFBFLRL +FBBBBFFLLL +FBBFBFFRRR +FFFBBBBRLR +BFBFBFFLRL +FFBBBFFRRL +BBFFBFFLRL +BFFFBBBRRL +FBFFFFFLRL +BBFFBFFRLL +BFFFBBFRLR +BFBFFBBRLR +FBFBFBBLLR +FBBFFBBRRL +BBFFBFFRLR +FFBFFBBRRR +BBFFFBBRLL +BFBFBFBRLL +FBFBBBBLLR +FBFBFBFLLL +FFBFBBBLRL +BFFBFBBLRR +BBFFFFFRRR +FFFBBFFLRL +BBFFFBFLRR +FFBFFBFRLL +FBFFBBFLLR +FBFFFFBLLR +FFBBBBFRLL +FFFBBFFLRR +BBFFFFFLLL +BBFBFBFLRR +FFBBBBFRLR +BBFFFBBLLL +FFBFBBFRLL +BFFFFFFLRR +FFBFFFBRLL +FBFFFFFRRL +BBFFFBBLLR +FFFBBFBRLR +BFFBBFFRRL +FBBBBFFRLL +BFBBFFBRLR +BFFFBFBLRR +BFBFFBBLLR +BFFBFBBRRR +BBFFFBFRRR +FFBBBFFRLL +BFBBFBBRRR +FFBBBBBRLR +BFFFBBBRLR +BFFFBBFLLL +FFBFFBBLRL +FFBBFBFLRL +FBFBFBBLRL +BFFBBFBRLR +FBBBBFBRRL +FBFBBBFRRR +BBFBFFBRRR +BBFBFBFRRL +FBBBBFBRLL +FBFFFBBLLL +BFBFBBFLLL +FBBBBFFRRR +FBBFBBFLRR +FFBFFFFRRL +FFFBFBFRLL +FBFBBFBRLR +FFBBBFFLLR +FBFFBBFLLL +FFFBBBBRRR +BFFFFBFRRR +BFBFFFFLRL +FBFBFFBLLL +BFFBBBBRRR +BFFBFBFLLL +FBFBBFFLLL +FBBFBBFLLR +FBBFBFFLLR +BBFFBFFRRR +FBBBBBFLRR +FFBFBBBRLL +FBBBBBBLLL +BFBBFBBLRR +FBFBFFFRLR +FFBBBBBRRL +FBFFFFBRRR +FBBFFBFRRR +FFFBBBBRLL +FBBFFFFRRR +BFFBFFBLRL +FFFBBBBLRR +BFBBBBFRRL +BFFFFBBLLR +BFFFFFFRLR +BFFBBFFRLR +BFFBBFBLRL +BBFFFFBLLL +BFFFFBBRLL +FBBFFBFRLL +FFFBBFBLRR +BBFBFFBRLR +BFFFBBBLRL +BFBBFFFRRL +BFBFFBFRLL +BFFBFBBRRL +FBFFBFFLLL +BFBBFFBRLL +BFBBBFFLRL +FFFBFBFRLR +BFFBFFBLLR +BBFFFFBLLR +FFBBFBBRRR +FBBFBBFRRR +FFBBBFFLLL +BFBBFFFLRR +FFBFFBFRRR +FBBFBBFRLR +FBFBFFBLRL +BBFFBFBLRL +BFFFFBFLRR +FBBBFFFRLL +FFFBBFFRRL +FFBFBFFRLR +FFBBBBBLLR +BFFBBFBRRL +BFFBFBFLRR +FFFBFBBRLL +FBFBBBBLRR +BFBFFFBRRL +FFBFBBBRRL +FFBFBFFLRR +FFBFBFBLRR +BFFBBFBLRR +FFFBFBFLRL +BFFBFBBRLL +BFFBFFFRLR +FFBBFFBLRR +FBBBBBFRLL +FBFBFBFRLL +BFBBBBBRRR +BBFBFFFLLR +FFBFFFFRLL +FFFBBFFLLR +BFBBFFFRRR +FBBBFBFLLR +BFBBBBBRRL +FBBBBBBLRL +FBBBFBFLLL +BFFBFFBLLL +BFFBFFBRRL +FBFFBFBRRR +FBFBFBBLRR +BFFFBFFRLR +FBFBFBBRRL +BFBBBBBLLL +FBFFBBFLRR +BBFFFBBRRR +FFFBFBBLRR +FBBFFBBLLL +BFFFFFBRLL +BBFBFBFRLR +BFFFBFFLRR +FBFBFFBLRR +BFBBBFBRLR +BBFFBFBLLL +FFBBBBFLLR +FBBBFBFRLR +FBBBBBFRRL +FBBBFFBRRR +FFBBBBFLRR +BBFFBBBRRR +BFFFFBFLLR +FBFFBBFRRR +BBFFFFFRRL +BBFFBBBRLL +FBFFFFBRRL +FBFFBBBLRL +BFFFFFFRRR +BFFFBBBLLR +FBFBBFBLRL +BFBFBBBLRL +FFBBFBFRRL +FBFFBBBRLR +BFFBBBFRLR +FFBFBBBLRR +BFFBFFFLLL +FBBBFFBLLR +BFBFBBFRRL +FFBFFBBLRR +BBFFFBBRLR +FFBFFBBRLL +FBFFFFFRLR +FBBBFBBLRL +BBFFFBFLLR +FBBFFFFRLL +BFFFBBFLRL +BFBBBBBRLR +BFFBFBBLLR +FFBBFFBLRL +BFBBBFBRLL +BFBBFBFRRR +FFBBFFFLRL +FFBFFFBLLL +FFBFFBBLLR +BBFFFBFRRL +BFFBBFFLRL +FBBFFBFLRL +BFFFBBBRRR +FFBBFFFRRL +FFBFBFFRRL +FBBBBFBLRL +BBFFBBFLLR +FBBBBFBRLR +BFBFFBFRLR +FFBFFBBLLL +FFBBBBBLLL +BFBFBBFRRR +BBFFFFFRLL +FBFFFBFRLR +BFBBBBFRLR +FBBFFFBRLR +BFFFFFBLRR +FBFFBBBRRL +FBBBFBFLRL +BFFFBFFLRL +BFBFBBFLRR +BFBBFBFRLR +FFBFFBFRLR +BBFFFBBLRL +BFBFFBFLLL +BBFFBBFRLL +FBBBBBBRRL +FFBBFFFLLR +FFFBBBBLRL +BBFFBFFLLL +FBBBFFFLRR +FBFBFBFLLR +FFBFBFFLLL +FFBFFFBLRL +BFBFFBBLLL +FBFBFFFLRR +BBFFBBFLRL +BFFFBFFRRR +FBFFBBBRLL +FFFBBBFRLL +FBFFFBFLLL +BBFFFBFRLR +BBFFBBFLLL +BBFBFFFRLL +BBFFBBBLLL +FBFBBFBLLL +FBBFBBBLRL +FBFFFFFLRR +FBFBBFBRLL +FFFBBFBRLL +FBBBFBFLRR +FBFBFFFLLR +FFBFFFFRRR +BFFBBFFRLL +BBFFFFBRLL +BFBBBFBLLR +BFBBFBFLLL +FBBBBBFRRR +FFBFBBBRLR +BFFFFBFLLL +BFFFFFBRLR +BFBFFFFLLL +BFBFFBBRRL +FFBFFBFRRL +FBBBFBBLRR +BFBFFBFLRL +FBBBBBBRLL +FFFBBFBLRL +FFBFBBFLLR +BFBFBBBLLR +FBFBBFFRLR +FBFBFFBLLR +BBFFBBBLRL +BFBFFBBLRR +FFBBFFFRRR +FBFBBBFRLR +BFBBFBFLRR +FBBFBFFRRL +FBFBBFFLRR +FBBFBFBRRR +FBFBBBFLRR +BFBBBBBLLR +FBFFFBFLLR +FBFBBFBLLR +FFBFFFFLRR +BFBFBBBRLR +FBFFFFFRLL +FFBBBBBLRL +BFBBBFFLLL +BBFFFFFLLR +BFFFBBFRRR +FBFBFFBRRL +FFFBBFBRRR +FBBBFBBLLR +BFFFFBFRLL +BFBFBFFRLL +BFBFBBFLRL +FFBBBFFRLR +BFBFBBBLLL +BFFFBBBLRR +BFBBFFFLLL +FBFBFBBRLL +BFFFFFBLLL +BBFBFFFLRR +BFBFFBBRLL +FFBFBBFRRL +FBFBBBFLLL +FBFFFFBLLL +FBFFBFFLLR +FBBFBBFRRL +BBFFBBFRRR +BFFFBFBRRL +BFBFFFBRLR +FBBFFBFLLR +BFBFFFFRLL +BFBFBBBRRR +BFBFFFFRLR +FFBFBFBLLR +FBFFFBFLRR +FFBBBBBRRR +FBBFFFBLRR +FFBFFFBRLR +BFFFBFBRRR +FBBFBBBLLR +BFBBBBBLRL +FBBBFFFLRL +BFFBBFFRRR +BFBBBFFRLL +BFBFFFFLLR +BFFBFFFLRL +BFBFFFFRRR +BBFFFFFRLR +FBFFFBFRLL +FFFBBBFRRR +BFFFBFBLLR +FBBFBFFRLL +FBBBFBBLLL +BFBBBBBRLL +BFFBBBFRRR +FFFBFBFRRR +BFBBBFBRRL +FBFFBFBLLL +FBBBFFFRLR +FBFBBFFRRL +FBBFFBFRRL +FBBFBFBLRR +BFFFFFBLRL +FBBBFBFRRR +BFFFBBBLLL +FFBBBFBRLL diff --git a/2020/day05/testinput b/2020/day05/testinput new file mode 100644 index 0000000..b036d3e --- /dev/null +++ b/2020/day05/testinput @@ -0,0 +1,3 @@ +BFFFBBFRRR +FFFBBBFRRR +BBFFBBFRLL