19 lines
386 B
Haskell
19 lines
386 B
Haskell
import Data.List (sort, group)
|
|
|
|
allUniq :: Ord a => [a] -> Bool
|
|
allUniq xs = length xs == length (group (sort xs))
|
|
|
|
findPacket :: Int -> String -> Int
|
|
findPacket n s@(x:xs)
|
|
| allUniq (take n s) = n
|
|
| otherwise = 1 + findPacket n xs
|
|
|
|
main :: IO ()
|
|
main = do
|
|
x <- getContents
|
|
|
|
putStr "part 1: "
|
|
print $ findPacket 4 x
|
|
|
|
putStr "part 2: "
|
|
print $ findPacket 14 x |