From 38f3a717b0f8095fb05b9be0bebd158474eb7618 Mon Sep 17 00:00:00 2001 From: Akshay Date: Tue, 15 Dec 2020 19:21:04 +0530 Subject: add day15 --- execs/Day15.hs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 execs/Day15.hs (limited to 'execs/Day15.hs') diff --git a/execs/Day15.hs b/execs/Day15.hs new file mode 100644 index 0000000..cd498fb --- /dev/null +++ b/execs/Day15.hs @@ -0,0 +1,21 @@ +module Main where + +import Data.Maybe +import Data.List.Split +import qualified Data.Map as M + +run :: [Int] -> Int -> [Int] -> Int +run ls start input = fst $ foldl fn (start, startMap) ls + where startMap = M.fromList $ zip input [1..] + fn (last, seen) i = (i - last', seen') + where last' = fromMaybe i (M.lookup last seen) + seen' = M.insert last i seen + +main :: IO () +main = do + n <- map read . splitOn "," <$> readFile "input/15" + + -- holy off-by-one errors + print $ run [8..2020 - 1] 0 n + print $ run [8..30000000 - 1] 0 n + -- cgit v1.2.3