Add day 4

This commit is contained in:
Dominic Zimmer 2022-12-04 22:05:18 +01:00
parent 8519e093ea
commit d3641e80be
2 changed files with 1028 additions and 0 deletions

28
4.hs Normal file
View File

@ -0,0 +1,28 @@
{-# LANGUAGE ScopedTypeVariables #-}
import Data.Char
import Data.List.Split
import Data.List
import Data.Maybe
main = do
ls <- readFile "4.in"
putStrLn . show . solveB . parse$ ls
where
solveA :: [[[Int]]] -> Int
solveA = length . filter id . map contains
solveB :: [[[Int]]] -> Int
solveB = length . filter id . map overlaps
parse :: String -> [[[Int]]]
parse = map ( map (map parseInt . splitOn "-") . splitOn ",") .lines where
parseInt = read :: String -> Int
contains :: Ord a => [[a]] -> Bool
contains [[a,b],[c,d]] = isSorted [a, c, d, b] || isSorted [c, a, b, d]
overlaps :: Ord a => [[a]] -> Bool
overlaps [[a,b],[c,d]] = isSorted [a,c,b] || isSorted [a,d,b] || isSorted [c, a, d] || isSorted [c, b, d]
isSorted :: Ord a => [a] -> Bool
isSorted x = x == sort x

1000
4.in Normal file

File diff suppressed because it is too large Load Diff