-- Names scores -- -- Problem 22 -- Using names.txt (right click and 'Save Link/Target As...'), a 46K text file -- containing over five-thousand first names, begin by sorting it into alphabetical order. -- Then working out the alphabetical value for each name, multiply this value by -- its alphabetical position in the list to obtain a name score. -- -- For example, when the list is sorted into alphabetical order, COLIN, which is -- worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. -- So, COLIN would obtain a score of 938 × 53 = 49714. -- -- What is the total of all the name scores in the file? import Data.Char(ord) import Data.List(sort) main = do content <- readFile "../data/022_names.txt" let nameSum name = sum [ord c - ord 'A' + 1 | c <- name] names = sort $ words $ foldr (\c acc -> (if c `elem` "\"," then ' ' else c) : acc) "" content print (sum [nameSum n * i | (n, i) <- zip (names) [1..]])