Содержание
Алгоритм
для десятичного числа X
- Создайте объект для каждого символа в качестве ключа и его соответствующего значения
const roman = {
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
};
-
найти наибольшее десятичное значение V, которое меньше или
меньше или равно десятичному числу X. -
Сохраните римскую цифру, найденную после вычитания
значения V из X -
Повторяйте описанный выше процесс, пока не получите нулевое значение X.
Пример
X = 36
Функция Javascript для преобразования целого числа в римскую цифру
/**
* @param {number} num
* @return {string}
*/
const roman = {
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
};
var intToRoman = function(num,result=[]) {
if(num == 0){
return ''
}
for(const props in roman){
if(roman[props]<=num){
result.push(props);
num = num - roman[props];
intToRoman(num,result);
return result.join("");
}
}
};
console.log(intToRoman(36));
Тестовые случаи :
Input: num = 3
Output: "III"
Explanation: 3 is represented as 3 ones.
Input: num = 58
Output: "LVIII"
Explanation: L = 50, V = 5, III = 3.
Input: num = 1994
Output: "MCMXCIV"
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.