Problem:
ヒストグラム

テンアイスクリームという名前のアイスクリーム屋さんがあります。このお店では常に 10 種類のアイスクリームが店頭に並ぶようにしています。お店の店長は商品開発の参考にするために、アイスクリームの売れ具合を表すグラフを毎日作成しています。

そんな店長のために、あなたは各アイスクリームの販売数をグラフで表示するプログラムを作成することになりました。

一日に販売されるアイスクリームの総数と売れたアイスクリームの番号を入力とし、アイスクリームの種類ごとに販売した数だけ * (半角アスタリスク) を出力するプログラムを作成してください。ただし、アイスクリームの種類を 0 から 9 までの整数で表わします。また、販売個数がゼロのアイスクリームは、- (半角ハイフン) をひとつ出力します。

Input

複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。
各データセットは以下の形式で与えられます。

n
c1
c2
:
cn

1 行目に一日に販売されるアイスクリームの総数 n (1 ≤ n ≤ 10000) が与えられます。続く n 行に第 i のアイスクリームの種類 ci (0 ≤ ci≤ 9) が与えられます。

データセットの数は 20 を超えません。

Output

入力データセットごとに、各アイスクリームの種類の番号順に販売数を出力します。

Sample Input

15
2
6
7
0
1
9
8
7
3
8
9
4
8
2
2
3
9
1
5
0

Output for the Sample Input

*
*
***
*
*
-
*
**
***
**
-
*
-
-
-
*
-
-
-
*

Solution in Haskell (judge verdict: Accepted)

import Control.Applicative
import Control.Monad (replicateM, unless)

solver :: Int -> [Int] -> [String]
solver 10 _  = []
solver n xs =
  let y = length (filter ( == n) xs)
  in
    if y == 0
      then "-" : solver (n+1) xs
    else
      concat (replicate y "*") : solver (n+1) xs

main :: IO()
main = do
  n <- (read :: String -> Int) <$> getLine
  unless (n == 0) $ do
    inputs <- map (read :: String -> Int) <$> replicateM n getLine
    mapM_ putStrLn $ solver 0 inputs
    main