My solutions to Advent of Code 2021
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
|
|
module Main where
main :: IO () main = interact solution
type Board = [[Int]]
scnd :: (b -> c) -> (a, b) -> (a, c) scnd f (a, b) = (a, f b)
frst :: (a -> c) -> (a, b) -> (c, b) frst f (a, b) = (f a, b)
solution :: String -> String solution = show -- ([Int], [Boards]) . scnd toBoards . scnd (map (map (read :: String -> Int))) . scnd (filter (not . null)) . scnd (map words) . frst (map (read :: String -> Int)) . frst splitcomma . (\x -> (head x, tail x)) . lines where splitcomma :: String -> [String] -- "stole" the implementation from `words` splitcomma s = case dropWhile (==',') s of "" -> [] s' -> w : splitcomma s'' where (w, s'') = break (==',') s'
toBoards :: [[Int]] -> [Board] toBoards [] = [] toBoards (a:b:c:d:e:r) = [a,b,c,d,e]:toBoards r
|