[hs] Solve 2020_10
This commit is contained in:
parent
f642872ea1
commit
8233376b4c
2 changed files with 35 additions and 0 deletions
|
|
@ -12,6 +12,7 @@ import qualified Aoc.Y2020.D06 as D06
|
||||||
import qualified Aoc.Y2020.D07 as D07
|
import qualified Aoc.Y2020.D07 as D07
|
||||||
import qualified Aoc.Y2020.D08 as D08
|
import qualified Aoc.Y2020.D08 as D08
|
||||||
import qualified Aoc.Y2020.D09 as D09
|
import qualified Aoc.Y2020.D09 as D09
|
||||||
|
import qualified Aoc.Y2020.D10 as D10
|
||||||
|
|
||||||
year :: Year
|
year :: Year
|
||||||
year = Year 2020
|
year = Year 2020
|
||||||
|
|
@ -24,4 +25,5 @@ year = Year 2020
|
||||||
, ( 7, D07.day)
|
, ( 7, D07.day)
|
||||||
, ( 8, D08.day)
|
, ( 8, D08.day)
|
||||||
, ( 9, D09.day)
|
, ( 9, D09.day)
|
||||||
|
, (10, D10.day)
|
||||||
]
|
]
|
||||||
|
|
|
||||||
33
hs/src/Aoc/Y2020/D10.hs
Normal file
33
hs/src/Aoc/Y2020/D10.hs
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
module Aoc.Y2020.D10
|
||||||
|
( day
|
||||||
|
) where
|
||||||
|
|
||||||
|
import Data.List
|
||||||
|
|
||||||
|
import Aoc.Day
|
||||||
|
import Aoc.Parse
|
||||||
|
|
||||||
|
parser :: Parser [Integer]
|
||||||
|
parser = manyLines decimal
|
||||||
|
|
||||||
|
possibilities :: Integer -> Integer -> Integer -> [Integer] -> Integer
|
||||||
|
possibilities _ _ c [] = c
|
||||||
|
possibilities a b c (1:xs) = possibilities b c (a + b + c) [x - 1 | x <- xs]
|
||||||
|
possibilities _ b c (2:xs) = possibilities c 0 (b + c) [x - 2 | x <- xs]
|
||||||
|
possibilities _ _ c (3:xs) = possibilities 0 0 c [x - 3 | x <- xs]
|
||||||
|
possibilities _ _ _ (_:_) = 0
|
||||||
|
|
||||||
|
solver :: [Integer] -> IO ()
|
||||||
|
solver nums = do
|
||||||
|
let snums = sort nums ++ [maximum nums + 3]
|
||||||
|
|
||||||
|
putStrLn ">> Part 1"
|
||||||
|
let diffs = zipWith (-) snums (0 : snums)
|
||||||
|
print $ length (filter (==1) diffs) * length (filter (==3) diffs)
|
||||||
|
|
||||||
|
putStrLn ""
|
||||||
|
putStrLn ">> Part 2"
|
||||||
|
print $ possibilities 0 0 1 snums
|
||||||
|
|
||||||
|
day :: Day
|
||||||
|
day = dayParse parser solver
|
||||||
Loading…
Add table
Add a link
Reference in a new issue