現今世界上大多數人使用阿拉伯數字(0–9)。 但如果你回到兩千年前,你會發現大多數歐洲人使用的是羅馬數字。
要寫出一個羅馬數字,我們使用下列拉丁字母,每個字母都有對應的值:
| M | D | C | L | X | V | I |
|---|---|---|---|---|---|---|
| 1000 | 500 | 100 | 50 | 10 | 5 | 1 |
羅馬數字是這些字母組成的序列,它的值就是各字母值的總和。
例如,XVIII 的值是 18(10 + 5 + 1 + 1 + 1 = 18)。
不過有一條規則讓事情變得比較複雜,那就是同一個字母不能連續使用超過三次。
這表示我們不能用看似自然的 IIII 來表示 4 這樣的數字。
遇到這些數字時,我們改用在兩個字母之間做減法的方式。
所以我們不把 4 想成 1 + 1 + 1 + 1,而是想成 5 - 1。
而且對我們現代人的思維來說有點容易搞混的是,我們會把比較小的數字寫在前面。
這只適用於以下情況:4(IV)、9(IX)、40(XL)、90(XC)、400(CD)和 900(CM)。
羅馬數字中順序很重要! 字母(以及上面的特殊組合)必須由左至右按值遞減的順序排列。
以下是一些例子:
105 => CV
---- => --
100 => C
+ 5 => V
106 => CVI
---- => --
100 => C
+ 5 => V
+ 1 => I
104 => CIV
---- => ---
100 => C
+ 4 => IV
還有一個更複雜的例子:
1996 => MCMXCVI
----- => -------
1000 => M
+ 900 => CM
+ 90 => XC
+ 5 => V
+ 1 => I
你的任務是把數字從阿拉伯數字轉換成羅馬數字。
這項練習只關注傳統羅馬數字,其中最大的數字是 MMMCMXCIX(也就是 3,999)。
在阿拉伯數字和羅馬數字之間互相轉換有很多不同的方法。 我們建議先採用直觀的做法,熟悉羅馬數字的概念,然後再尋找更有效率的方法。
記得在最後看看我們的深入探索影片,探索你可以採用的各種不同做法!
要完成這道練習,你需要實作numerals函式,這個函式或許能將數字轉換成代表羅馬數字的字串。
你的函式至少要能把 3000 以內的數字轉換完成,不過想走到多遠,就由你自己決定喔。