From f9513efab489eb5c4b64de7d7ee97e4b0352176e Mon Sep 17 00:00:00 2001 From: Daniele Fucini Date: Wed, 18 Dec 2024 16:33:14 +0100 Subject: [PATCH] Improve code for Day 2, Puzzle 2 --- src/Day02/Puzzle2.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Day02/Puzzle2.hs b/src/Day02/Puzzle2.hs index 028d567..34a7810 100644 --- a/src/Day02/Puzzle2.hs +++ b/src/Day02/Puzzle2.hs @@ -1,6 +1,7 @@ module Day02.Puzzle2 (day02_2) where -import Data.List (inits, sort, sortBy, tails) +import Control.Monad +import Data.List (sort, sortBy) import Data.Ord isSafe :: [Int] -> Bool @@ -11,10 +12,9 @@ isSafe xs = (isAscending xs || isDescending xs) && maximum distances <= 3 && min distances = map abs $ zipWith (-) xs (drop 1 xs) removeLevel :: [Int] -> [[Int]] -removeLevel xs = zipWith (++) ys zs +removeLevel xs = filter (\x -> length x == l) $ filterM (const [True, False]) xs where - ys = map init $ drop 1 (inits xs) - zs = map (drop 1) $ init (tails xs) + l = length xs - 1 day02_2 :: IO () day02_2 = do