diff --git a/day6.hs b/day6.hs index cbf56f9..0a8442c 100644 --- a/day6.hs +++ b/day6.hs @@ -4,18 +4,13 @@ main :: IO () main = do input <- readFile "day6.in" putStr "Q1: " - print $ q1 input + print $ parse 4 input putStr "Q2: " - print $ q2 input + print $ parse 14 input -q1, q2 :: String -> Int -q1 = length . parse 4 -q2 = length . parse 14 +group :: Int -> [Char] -> [[Char]] +group _ [] = [] +group n xs = take n xs : group n (tail xs) -parse :: Int -> String -> String -parse n a = parse' n (splitAt n a) - -parse' :: Int -> (String, String) -> String -parse' n (a, b) - | length (nub (drop (length a - n) a)) == n = a - | otherwise = parse' n (a ++ [head b], tail b) +parse :: Int -> String -> Int +parse n = (+ n) . length . takeWhile ((< n) . length) . map nub . group n