Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Main where
- import Data.List
- import Data.List.Split
- import Data.Ord
- part1 layers = count '1' layer * count '2' layer
- where layer = minimumBy (comparing (count '0')) layers
- count digit = length . filter (==digit)
- part2 (w, _) = unlines . chunksOf w . map render . foldl1 (zipWith combine)
- where combine '2' p = p
- combine p _ = p
- render '0' = ' '
- render '1' = 'X'
- render '2' = ' '
- main :: IO ()
- main = do
- digits <- head . lines <$> getContents
- let (w,h) = (25,6)
- layers = chunksOf (w*h) digits
- print $ part1 layers
- putStrLn $ part2 (w, h) layers
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement