aoc2022/6.hs
Dominic Zimmer 6da6360145 Add day 6
2022-12-06 11:14:14 +01:00

20 lines
634 B
Haskell

{-# LANGUAGE ScopedTypeVariables #-}
import Data.Char
import Data.List.Split
import Data.List
import Data.Maybe
import Data.Set
main = do
ls <- readFile "6.in"
putStrLn . show . solveB . parse $ ls where
parse = (!!0) . words
solveA = solve 6
solveB = solve 13
solve :: Int -> String -> Maybe Int
solve offset = fmap ((+offset) . fst ) . find (startingSequence . snd) . enumerate . suffixes where
suffixes = ((fmap Prelude.drop [0..]) <*>) . pure
enumerate = zip [1..]
startingSequence = (==(offset+1)) . size . fromList . Prelude.take (offset+1)