morris555's diary

高校生のブログです。

Problem 22

Problem 22です。

import Data.List
import Data.Maybe
import Control.Applicative

score = sum . map (fromMaybe 0 . flip lookup (zip ['A'..'Z'] [1..26]))

main = do
  names <- (sort . list) <$> getContents
  print . (foldr (\(x, y) s -> s + x * y) 0) . zip [1..] $ map score names
    where
      list x = read $ "[" ++ x ++ "]"
# ./p22 < name.txt

こんな感じです。