projects
/
advent-of-code-17.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Day 16
[advent-of-code-17.git]
/
src
/
advent04
/
advent04.hs
diff --git
a/src/advent04/advent04.hs
b/src/advent04/advent04.hs
index b8ae85c8a46f885b993184c43ecc25676446ce44..85408d8dd83dbc6d7b9aee4c00d326d644f8300c 100644
(file)
--- a/
src/advent04/advent04.hs
+++ b/
src/advent04/advent04.hs
@@
-1,11
+1,9
@@
-import Data.List (sort)
-import Data.List.Split (splitOn)
-import qualified Data.Map.Strict as M
+import Data.List (sort, nub)
main :: IO ()
main = do
text <- readFile "data/advent04.txt"
main :: IO ()
main = do
text <- readFile "data/advent04.txt"
- let passphrases = map
parseLine
$ lines text
+ let passphrases = map
words
$ lines text
print $ part1 passphrases
print $ part2 passphrases
print $ part1 passphrases
print $ part2 passphrases
@@
-15,14
+13,8
@@
part1 = length . filter (not . containsDuplicates)
part2 :: [[String]] -> Int
part2 = length . filter (not . containsAnagrams)
part2 :: [[String]] -> Int
part2 = length . filter (not . containsAnagrams)
-parseLine :: String -> [String]
-parseLine = filter (not . null) . splitOn " "
-
-frequency :: (Ord a) => [a] -> M.Map a Int
-frequency xs = M.fromListWith (+) [(x, 1) | x <- xs]
-
containsDuplicates :: [String] -> Bool
containsDuplicates :: [String] -> Bool
-containsDuplicates
= (not . M.null) . M.filter (> 1) . frequency
+containsDuplicates
passphrase = (length passphrase) /= (length $ nub passphrase)
containsAnagrams :: [String] -> Bool
containsAnagrams = containsDuplicates . (map sort)
containsAnagrams :: [String] -> Bool
containsAnagrams = containsDuplicates . (map sort)