AtCoder Regular Contest 011

B - ルイス・キャロルの記憶術


Time limit時間制限 : 2sec / Stack limitスタック制限 : 64MB / Memory limitメモリ制限 : 256MB

問題文

古今東西、数字の記憶には様々な方法が取り入れられてきた。
例えば日本では e の値を「鮒一鉢二鉢一鉢二鉢至極惜しい」などとして記憶するし、欧米では π の値を Yes, I know a number! として記憶する。 「不思議の国のアリス」の著者として知られるルイス・キャロル (本名:チャールズ・ラトウィッジ・ドジソン) は、子音のみを用いた独自の記憶術を作り、様々な年号を記憶していたらしい。 これによれば、次のように、文字に数字を割り当てていたという。
図:文字から数字への割り当て
この表に従い、覚えたい数字を子音に変換し、これを用いた単語をひとつ作って文にすることで、キャロルは年号などを覚えていたという。
なお、子音以外の文字 (a,e,i,o,u,y や、コンマ、ピリオド等) はすべて無視され、大文字も小文字も同じように変換される。

例えば、モーツァルトの正没年は Mozart plays magic. とし、plays756 に変換し、 magic791 に変換して、 1756~ 1791 年と覚えることができるわけ である。 この方式での記憶文が与えられるとき、それを前から順に変換し、変換した数字を出力するプログラムを作成せよ。

入力

入力は以下の形式で標準入力から与えられる。
N
w_{0} w_{1} ... w_{N-1}
  1. 1 行目は単語の数を表す整数 N(1≦N≦1,000) が与えられる。
  2. 2 行目は単語が半角スペース区切りで与えられる。
    • 単語とは半角英字 ピリオド コンマから構成される。
    • 各単語は 1 文字以上 30 文字以内である。

出力

与えられた単語から変換された数字を 1 行で出力せよ。
ただし、変換された数字と数字の間には半角スペースを 1 つ入れること。
整数の頭に 0 がつく場合もあるが、その場合は 0 も出力すること。
また、出力の最後には改行をいれること。

入力例 1

3
Mozart plays magic.

出力例 1

7003 756 791
  • 変換表により、MozartM7 に変更します。
    z0 に変更します。
    r0 に変更します。
    t3 に変更します。
    こうして、Mozartから 7003 へ変換することができました。
  • 同様にして、playsから 756 へ、magicから 791 へ変換します。

  • 入力例 2

    3
    Columbus found USA.
    

    出力例 2

    15716 492 6
    
    • Columbus を変換して 15716
    • found を変換して 492
    • USA を変換して 6 をそれぞれ得ることができます。

    入力例 3

    7
    I have a scissors for right hand.
    

    出力例 3

    85 616606 40 0983 892
    
    • Iaは母音のみからなる単語ですので、これらの単語は無視され、全部で 5 個の整数が出力されます。

    入力例 4

    4
    abc ab aa aiueo
    

    出力例 4

    11 1
    
    • 最後に余分な空白を入れてはいけません。

    入力例 5

    [訂正] 2013.01.19 21:16 1 行目が誤って 5 になっておりましたので、修正いたしました。
    4
    aaa aa a aa
    

    出力例 5

    
    
    • 母音のみからなる単語しかないので、最後の改行のみが出力されます。

    Submit提出する