diff --git a/aoc2024.cabal b/aoc2024.cabal index 962ff31..a0512e4 100644 --- a/aoc2024.cabal +++ b/aoc2024.cabal @@ -184,3 +184,8 @@ executable day24 build-depends: , containers , libaoc + +executable day25 + import: common + hs-source-dirs: src + main-is: Day25.hs diff --git a/src/Day25.hs b/src/Day25.hs new file mode 100644 index 0000000..becb440 --- /dev/null +++ b/src/Day25.hs @@ -0,0 +1,33 @@ +module Main where + +import Data.List (partition) + +group :: [[a]] -> [[[a]]] +group [] = [] +group ([] : xs) = group xs +group xs = take 7 xs : group (drop 7 xs) + +part1 :: [[String]] -> [[String]] -> Int +part1 locks keys = + length + [ () + | lock <- locks, + key <- keys, + and + [ l == '.' || k == '.' + | (lrow, krow) <- zip lock key, + (l, k) <- zip lrow krow + ] + ] + +main :: IO () +main = + do + (locks, keys) <- + partition ((== '#') . head . head) + . group + . lines + <$> readFile "./inputs/day25.in" + + putStr "Part 1: " >> print (part1 locks keys) + putStrLn "Part 2: See you next year :D"