概要
古代ローマ人は、ラテン文字を使用した数体系を考案しました。これは、それらを十分に機能させ、現在の文明ではまだ使用されていますが、程度ははるかに小さいです。ローマ人は、その使用時に、多くのアプリケーションで非常に役立つようにするために、これらの数値の使用と操作を学ぶ必要があったでしょう。たとえば、男性が35頭の牛を所有していて、さらに27頭を調達した場合、それらをすべて数える以外に、新しい合計をどのようにして知るのでしょうか。(そうですね、そろばんを使って...)ローマ人ができるなら、きっと私たちもそれを理解することができます。
目的 2つのローマ数字
を加算し、どちらかの入力の文字列表現を数値に変換せずに結果を出力する、最も短いアルゴリズム/関数/プログラムを記述します。
規則/制約
書式設定における歴史的/中世以前の不整合のため、正書法に関するいくつかの非標準(現代の使用法による)規則の概要を説明します。例として、以下のバリューガイドをご覧ください。
- I、X、C、およびMの文字は、連続して4回まで繰り返すことができますが、それ以上繰り返すことはできません。D、L、およびVを繰り返すことはできません。
- ローマの表現で別の文字のすぐ右側にある文字は、左側の文字と同じか、それよりも小さい値になります。
- 言い換えれば、
VIIII == 9
しかしIX != 9
、そして無効/許可されていません。
- 言い換えれば、
- すべての入力値は2,000(MM)以下になります。Mより大きい数値を表す必要はありません。
- 上記のルールに従って、すべての入力値は有効なローマ数字になります。
- ソリューションの一部として、数値を10進数、2進数、またはその他の数値システムに変換することはできません(そのような方法を使用して結果を検証することはできます)。
- これはコードゴルフなので、最短のコードが勝ちます。
バリューガイド
Symbol Value
I 1
II 2
III 3
IIII 4
V 5
VIIII 9
X 10
XIIII 14
XXXXIIII 44
L 50
LXXXXVIIII 99
C 100
D 500
M 1,000
例
XII + VIII = XX (12 + 8 = 20)
MCCXXII + MCCXXII = MMCCCCXXXXIIII (1,222 + 1,222 = 2,444)
XXIIII + XXXXII = LXVI (24 + 42 = 66)
さらに説明が必要な場合は、お問い合わせください。