Simplified day 4
[advent-of-code-17.git] / src / advent04 / advent04.hs
1 import Data.List (sort, nub)
2
3 main :: IO ()
4 main = do
5 text <- readFile "data/advent04.txt"
6 let passphrases = map words $ lines text
7 print $ part1 passphrases
8 print $ part2 passphrases
9
10 part1 :: [[String]] -> Int
11 part1 = length . filter (not . containsDuplicates)
12
13 part2 :: [[String]] -> Int
14 part2 = length . filter (not . containsAnagrams)
15
16 containsDuplicates :: [String] -> Bool
17 containsDuplicates passphrase = (length passphrase) /= (length $ nub passphrase)
18
19 containsAnagrams :: [String] -> Bool
20 containsAnagrams = containsDuplicates . (map sort)