JavaScript
AC學習筆記
可以將 1~ 3999 的正整數,轉換為羅馬數字
於是我們大概可以看出羅馬數字是按照每個位數組合而成的,例如:
2439 = MM(2000) + CD(400) + XXX(30) + IX(9)
透過前面提到的規則我們找到了13種符號來組合出所有的數字,如下:
M(1000)、CM(900)、D(500)、CD(400)、C(100)、XC(90)、L(50)、XL(40)、X(10)、IX(9)、V(5)、IV(4)、I(1)
接下來我們可以使用Array或Object來存放數字及符號,這裡我是使用Array
const num = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
const symbol = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
最後運用迴圈來處理數字就可以啦↓
let roman = ""
for (let i = 0; i < num.length; i++) {
roman += symbol[i].repeat(Math.floor(number / num[i]))
number %= num[i]
}
function toRoman(number){
const num = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
const symbol = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
let roman = ""
for (let i = 0; i < num.length; i++) {
// while (num[i] <= number) {
// roman += symbol[i]
// number -= num[i]
// }
roman += symbol[i].repeat(Math.floor(number / num[i]))
number %= num[i]
if (number === 0) {
return roman
}
}
return roman
}