Excel列名変換問題をHaskellでやってみた
Excel列名変換問題で第2回社内プログラミングコンテストを開催してみた(前編) - give IT a tryを今勉強中のHaskellでやってみました。
import System.Environment import Data.Char main :: IO () main = do (x:y:_) <- getArgs case read x of 0 -> putStrLn . show . str2int $ y 1 -> putStrLn . int2str . read $ y str2int :: String -> Int str2int s = sum [(ord c - 64) * 26 ^ i | (c, i) <- zip (reverse s) [0..]] int2str :: Int -> String int2str n = case (n `mod` 26, n `div` 26) of (0, 0) -> [] (0, q) -> int2str (q-1) ++ [chr (26 + 64)] (r, q) -> int2str q ++ [chr (r + 64)]