From 66fd0ab19ecbf789b4ebcff6d07be4184f0d6b08 Mon Sep 17 00:00:00 2001 From: shu Date: Fri, 11 Dec 2020 00:28:13 +0100 Subject: [PATCH] Day 10: Optimization --- 2020/day10/day10.hs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/2020/day10/day10.hs b/2020/day10/day10.hs index a31aaaf..762691c 100644 --- a/2020/day10/day10.hs +++ b/2020/day10/day10.hs @@ -6,12 +6,13 @@ main = do input <- map read . lines <$> readFile "input" print $ (product . map length . group . sort . jolts) input print $ - (product . map (arrangements . sum) . filter (elem 1) . group . jolts) input + (product . + map (last . trib [0, 0, 1] . sum) . filter (elem 1) . group . jolts) + input -arrangements :: Int -> Int -arrangements = - (\x -> length . filter (== x)) <*> - (map sum . nub . map (filter (/= 0)) . flip replicateM [0 .. 3]) - -jolts :: [Int] -> [Int] +jolts :: [Integer] -> [Integer] jolts = ap (zipWith subtract) tail . (\x -> 0 : x ++ [last x + 3]) . sort + +trib :: [Integer] -> Integer -> [Integer] +trib x 0 = x +trib [x, y, z] n = trib [y, z, x + y + z] (n - 1)