import Data.Char (isLetter)
import qualified Data.Map.Lazy as Map
-
-input = "cxdnnyjw"
-
main :: IO ()
main = do
text <- readFile "advent06.txt"
part1 message
part2 message
-
part1 :: [String] -> IO ()
part1 message = do
print $ map (fst) $ map (mostCommon) $ map (countedLetters) $ transpose message
print $ map (fst) $ map (leastCommon) $ map (countedLetters) $ transpose message
-
countedLetters :: String -> Map.Map Char Int
countedLetters name = Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name]