No Programming, No Life

プログラミング関連の話題や雑記

お題:アラビア数字・ローマ数字変換

プログラミングお題の一覧はこちら

※みなさんもこのお題をお気に入りの言語で解いてみて下さい。解いたらこの記事にトラックバックをお願いします。

説明

アラビア数字 <=> ローマ数字変換を行う関数、arabicToRoman および romanToArabic を実装せよ。

条件)
・ローマ数字の表記法についてはローマ数字 - Wikipediaを参考にすること。
・ローマ数字は半角英「I,V,X,L,C,D,M,i,v,x,l,c,d,m」のみ使用した文字列とし、それ以外はエラーとする。
・アラビア数字は整数 1 から 3999 のみ使用するものとし、それ以外はエラーとする。

変換例)
11 <=> XI
12 <=> XII
14 <=> XIV
18 <=> XVIII
24 <=> XXIV
43 <=> XLIII
99 <=> XCIX
495 <=> CDXCV
1888 <=> MDCCCLXXXVIII
1945 <=> MCMXLV
3999 <=> MMMCMXCIX

コードサンプル)
arabicToRoman(11) => "XI"
romanToArabic("MDCCCLXXXVIII") => 1888
romanToArabic("mdccclxxxviii") => 1888
romanToArabic("McmXLv") => 1945
arabicToRoman(0) => エラー
romanToArabic("A") => エラー

解いてみた

Groovy (2011-08-25更新)


ユニークなのは、文字列(整数を文字列化したものも含む)自体に変換能力を持たせて使っている点。なおエラー処理はまだ未実装。