From 3142bbcc613f880a9356ac1c837e2902f12a168e Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 7 Dec 2021 12:43:51 +0200 Subject: Day 04 --- utils.hs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'utils.hs') diff --git a/utils.hs b/utils.hs index 33f3f6e..04211ea 100644 --- a/utils.hs +++ b/utils.hs @@ -1,7 +1,25 @@ module Utils where +import Control.Applicative (ZipList (ZipList, getZipList)) + (.>) = flip (.) ($>) = flip ($) infixr 6 $> + +splitOn :: (Char -> Bool) -> String -> [String] +splitOn p s = case dropWhile p s of + "" -> [] + s' -> w : splitOn p s'' + where + (w, s'') = break p s' + +transpose :: [[a]] -> [[a]] +transpose = getZipList . traverse ZipList + +mapWithIndex :: (Num a1, Enum a1) => (a2 -> b) -> [a2] -> [(a1, b)] +mapWithIndex f xs = zip [0 ..] (map f xs) + +removeAt :: [Int] -> [b] -> [b] +removeAt is xs = mapWithIndex id xs $> filter (\(i', _) -> i' `notElem` is) .> map snd -- cgit v1.3