module Day6.Main (main) where import System.IO import Data.List main :: IO () main = do putStrLn "Day 6" handle <- openFile "app/Day6/input" ReadMode contents <- hGetContents handle let r1 = part1 contents putStrLn $ "part 1: " ++ show r1 let r2 = part2 contents putStrLn $ "part 2: " ++ show r2 distinct xs = length (nub xs) == length xs part1 :: String -> Int part1 contents = go contents 0 where go [] _ = 0 go (a:b:c:d:es) n | distinct [a,b,c,d] = n + 4 go (a:es) n = go es (n + 1) part2 :: String -> Int part2 contents = go contents 0 where go [] _ = 0 go (e:es) n = if distinct (e : take 13 es) then n + 14 else go es (n + 1)