日本情報オリンピック 第5回 予選 第2問目
もっと大きなモノを書いてみたいという欲求がムクムクと。
module Main (main) where import System import Control.Monad import Data.List (lookup, tails) makeAssocList :: [String] -> [(String,String)] makeAssocList = map (listToTuple . words) where listToTuple (x:y:_) = (x,y) convert :: [String] -> [(String,String)] -> String convert xs assoc = concatMap (flip convert' assoc) xs where convert' :: String -> [(String,String)] -> String convert' key assoc = case lookup key assoc of Nothing -> key Just v -> v main :: IO () main = do (inputFile:_) <- getArgs contents <- liftM lines $ readFile inputFile let tblLen = read $ head contents tbl = take tblLen $ tail contents tmp = drop tblLen $ tail contents dataLen = read $ head tmp datas = map (filter (/= ' ')) $ take dataLen $ tail tmp writeFile "output.txt" $ convert datas (makeAssocList tbl)