19
day6.hs
19
day6.hs
@@ -4,18 +4,13 @@ main :: IO ()
|
|||||||
main = do
|
main = do
|
||||||
input <- readFile "day6.in"
|
input <- readFile "day6.in"
|
||||||
putStr "Q1: "
|
putStr "Q1: "
|
||||||
print $ q1 input
|
print $ parse 4 input
|
||||||
putStr "Q2: "
|
putStr "Q2: "
|
||||||
print $ q2 input
|
print $ parse 14 input
|
||||||
|
|
||||||
q1, q2 :: String -> Int
|
group :: Int -> [Char] -> [[Char]]
|
||||||
q1 = length . parse 4
|
group _ [] = []
|
||||||
q2 = length . parse 14
|
group n xs = take n xs : group n (tail xs)
|
||||||
|
|
||||||
parse :: Int -> String -> String
|
parse :: Int -> String -> Int
|
||||||
parse n a = parse' n (splitAt n a)
|
parse n = (+ n) . length . takeWhile ((< n) . length) . map nub . group n
|
||||||
|
|
||||||
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)
|
|
||||||
|
Reference in New Issue
Block a user