Overengineered Day4, part two
This commit is contained in:
parent
e5a0801e06
commit
7852714f36
2 changed files with 16 additions and 1 deletions
|
@ -31,3 +31,5 @@ main = do
|
|||
let demoInput4 = "2-4,6-8\n2-3,4-5\n5-7,7-9\n2-8,3-7\n6-6,4-6\n2-6,4-8"
|
||||
putStrLn $ show $ Day4.solveA demoInput4
|
||||
putStrLn $ show $ Day4.solveA input4
|
||||
putStrLn $ show $ Day4.solveB demoInput4
|
||||
putStrLn $ show $ Day4.solveB input4
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
module AoC.Day4 where
|
||||
|
||||
import Data.Text (Text)
|
||||
-- import qualified Data.Text as T
|
||||
|
||||
import Data.Attoparsec.Text
|
||||
import Data.Bits (xor)
|
||||
|
||||
type Lower = Int
|
||||
type Higher = Int
|
||||
|
@ -36,3 +36,16 @@ solveA :: Text -> Either String Int
|
|||
solveA txt = do
|
||||
lines' <- parseInput txt
|
||||
pure $ (length . filter (uncurry eitherIncluded)) lines'
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Part 2
|
||||
overlap :: Range1D -> Range1D -> Bool
|
||||
overlap (Range1D l1 r1) (Range1D l2 r2) = (r1 >= l2) && (l1 <= r2)
|
||||
|
||||
eitherOverlap :: Range1D -> Range1D -> Bool
|
||||
eitherOverlap range1 range2 = range1 `overlap` range2
|
||||
|
||||
solveB :: Text -> Either String Int
|
||||
solveB txt = do
|
||||
lines' <- parseInput txt
|
||||
pure $ (length . filter (uncurry eitherOverlap)) lines'
|
||||
|
|
Loading…
Reference in a new issue