20 lines
634 B
Haskell
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)
|
|
|