どう書く? org 「あみだくじ」 (別解)
この間解いた問題の別解を考えてみた。
別解というほど根本的な違いはないけれど。
import List main :: IO () main = do headline <- getLine amida <- getContents let footline = foldl step headline $ lines amida putStrLn $ concat [headline, "\n", amida, footline] step :: String -> String -> String step [l] _ = [l] step lots line = let (lot, lots') = splitAt 2 $ swap lots line lots'' = step lots' (drop 2 line) in lot ++ lots'' swap :: String -> String -> String swap (l1:' ':l2:ls) ('|':'-':'|':_) = l2:' ':l1:ls swap lots _ = lots
今回はあみだくじを1行ずつ実行して、行ごとに結果を求めている。