@@ -184,3 +184,8 @@ executable day24
|
|||||||
build-depends:
|
build-depends:
|
||||||
, containers
|
, containers
|
||||||
, libaoc
|
, libaoc
|
||||||
|
|
||||||
|
executable day25
|
||||||
|
import: common
|
||||||
|
hs-source-dirs: src
|
||||||
|
main-is: Day25.hs
|
||||||
|
33
src/Day25.hs
Normal file
33
src/Day25.hs
Normal file
@@ -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"
|
Reference in New Issue
Block a user