概要
数字を文字に置き換えて、数字を暗記する方法について考える。
変換ルールと英文が与えられるので、各単語を数字に変換せよ。
解法
変換ルールをそのまま実装すれば解けます。
以下の実装では、余計な文字を除去するために filter にかけ、その後一旦 words することで先頭のスペースを消しています。
コード
import Control.Applicative import Control.Monad import Data.List import Data.Char main = do getLine lines <- words . filter ( not . isVowelDot ) . map toLower <$> getLine putStrLn $ unwords . map ( map convert ) $ lines isVowelDot :: Char -> Bool isVowelDot = ( `elem` "aeiouy,." ) convert :: Char -> Char convert c | c `elem` "bc" = '1' | c `elem` "dw" = '2' | c `elem` "tj" = '3' | c `elem` "fq" = '4' | c `elem` "lv" = '5' | c `elem` "sx" = '6' | c `elem` "pm" = '7' | c `elem` "hk" = '8' | c `elem` "ng" = '9' | c `elem` "zr" = '0' | otherwise = c