學習軌道
/
8th
8th
/
練習
/
羅馬數字
羅馬數字

羅馬數字

中等

簡介

現今世界上大多數人使用阿拉伯數字(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)。

Note

在阿拉伯數字和羅馬數字之間互相轉換有很多不同的方法。 我們建議先採用直觀的做法,熟悉羅馬數字的概念,然後再尋找更有效率的方法。

記得在最後看看我們的深入探索影片,探索你可以採用的各種不同做法!

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
8th Exercism

準備好開始 羅馬數字 了嗎?

註冊 Exercism,透過 70 個練習 和真人引導來學習並精通 8th,全部免費。

深入探索 羅馬數字!

探索這個棘手練習的各種不同解法,從遞迴到查表法,還有利用混合進位制的解法,以及 Common Lisp 一些投機取巧的簡單做法。