day6: clean up

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
2022-12-07 10:24:10 +05:30
parent fe8fe811c2
commit cadb7ccae1

19
day6.hs
View File

@@ -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