縦書き?の続き
行が異なる長さでもいけるようにした
import List main = putStrLn . unlines . transpose . normalize . reverse . lines =<< getContents -- 長さを同じにする normalize :: [String] -> [String] normalize s = fillSpace s (maxLength s) -- 一番長い文字列の長さ取得 maxLength :: [String] -> Int maxLength s = length $ maximumBy (\x y -> (length x) `compare` (length y)) s -- スペースで埋める fillSpace :: [String] -> Int -> [String] fillSpace [] _ = [] fillSpace (x:xs) len = (x ++ replicate (len - (length x)) ' ') : fillSpace xs len
うーん、けっこう長くなっちゃった(16行...関数宣言とかコメントとか改行を除けば6行)
このテキストを食わせると
Hello World Akira
こう出力されます
AH ke il rl ao W o r l d