キミならどう書く 2.0 - ROUND 3 -

cf. キミならどう書く 2.0 - ROUND 3 -

前のエントリでは話がBrainf*ck(一応伏せ字にする)にいっちゃったけど,こっちが本題。
まったくもって乗り遅れたけど書いてみた。

 import System
 
 
 showStar :: Int -> IO ()
 showStar n = do putStrLn $ (show n) ++ " : " ++ (repeatStar n)
 
 repeatStar :: Int -> String
 repeatStar n = take n $ repeat '*' 
 
 
 main = do args <- getArgs
           mapM_ showStar $ map read args

実行。

 >runghc starbar.hs 3 8 5
 3 : ***
 8 : ********
 5 : *****

OK。いけてるぞ。
でも桁数の違う数が混じると汚いな。

 >runghc starbar.hs 3 12 7
 3 : ***
 12 : ************
 7 : *******

まぁいいか。


追記:
(コメントから)
そうか。replicate を使えばいいのか。よし,ついでにポイントフリーにして,

 Prelude> let repeatStar = flip replicate '*'
 Prelude> :t repeatStar
 repeatStar :: Int -> [Char]
 Prelude> repeatStar 7
 "*******"