ローマ数字の文字列を整数に変換する最短の関数を作成します。
各手紙の規則は、ウィキペディアのページで見つけることができます。1,000を超える文字には、高い値を示すために括弧が配置されます。
要件:
- ローマ数字1から500,000に変換する必要があります
- 1分以内に完了する必要があります
- 利点をもたらす可能性のある組み込み関数を使用しません(例:ローマ数字を整数に変換する関数)
- 関数です
関数は分数をサポートする必要はありません。無効な入力は、0を返します。
最短の機能が優先されます。同点の場合、最も投票数の多いものが勝者となります。
テストケース
入力
III
出力
3
入力
IIII
出力
0
入力
XVI
出力
16
入力
(C)(D)(L)MMI
出力
452001
私には不適切で違法意味し、したがって、0を返す必要があります
—
マーティンニューヨーク
@Anon:元の3番目のテストケースを変更したときの番号のタイプが間違っていました。無効な入力と見なされるため、不適切なフォームをサポートする必要はありません。
—
ケビンブラウン
標準的なプラクティス(およびこの質問の複製の仕様)では、無効な入力が未定義の動作になるようにしています。この質問は4年前のもので、答えは1つだけだったので、要件を変更する必要がありますか?
—
リルトシアスト
@KevinBrown括弧で囲まれた文字のソースまたは説明が表示されません。codegolf.stackexchange.com/q/16254/43319に一致するように仕様を変更し、そこからの回答をここに移行できると思います。
—
アダム
(C)(D)(L)MMI
452,001になります。どのようにして価値を獲得しましたか?さらに、これは「不適切な」フォームをサポートする必要がありますか(例:のIC
代わりにXCIX
)?