euler/Problem22.hs

12 lines
391 B
Haskell

import Control.Applicative
import Control.Monad
import Data.List
import System.IO
uncomma :: String -> [String]
uncomma = filter ((/= ',') . head) . groupBy (\a b -> (a == ',') == (b == ','))
main = do
names <- sort . uncomma . filter (not . (`elem` "\"\r\n")) <$> readFile "p022_names.txt"
print $ sum $ zipWith (*) (map (sum . map (\c -> fromEnum c - fromEnum 'A' + 1)) names) [1..]