функция с математическими операциями над римскими цифрами
даны два числа в римском виде(например:'II + III') в строковом виде. знаки могут быть +,-,*,/.
у меня есть рабочая функция по сложению двух чисел в строковом виде:
const str2num = str => {
let string = '';
let operator = '';
for (const symbol of str) {
if (symbol === '+' || symbol === '-' || symbol === '*' || symbol === '/') {
string += ' ';
operator = symbol;
} else {
string += Number(symbol);
}
}
const arr = string.split(' ');
if (arr.includes('NaN')) {
return 'Вы ввели неверный символ';
}
const [a, b] = arr;
let result = 0;
switch (operator) {
case '+':
result = Number(a) + Number(b);
break;
case '-':
result = Number(a) - Number(b);
break;
case '*':
result = Number(a) * Number(b);
break;
case '/':
result = Number(a) / Number(b);
break;
}
return Math.round(result);
}
также, есть рабочая функция по переводу римского числа в арабское(например II = 2 или IV = 4)
function solution(str){
roman = str.split('');
let lookup = {
X:10,
IX:9,
V:5,
IV:4,
I:1
};
for(let key in lookup){
for(let i = 0; i < roman.length;i++){
if(roman[0] == 'I' && roman[1] == 'V'){
roman = [4];
} else if(roman[i] == key){
roman[i] = lookup[key];
} else if (roman[0] == 'I' && roman[1] == 'X'){
roman = [9];
} else{
continue;
}
}
}
return roman.reduce((elem,elem2)=>elem+elem2,0)
}
никак не могу написать функцию по проведению математических операций в строковом виде для римских цифр, вот функция которую я написал, но она не рабочая..
const rom2num = str => {
let string = '';
let operator = '';
for (const symbol of str) {
if (symbol === '+' || symbol === '-' || symbol === '*' || symbol === '/') {
string += ' ';
operator = symbol;
} else {
string += symbol;
}
}
const arr = string.split(' ');
if (arr.includes('NaN')){
return 'Вы ввели неверный символ';
}
const [a, b] = arr;
let result = 0;
switch (operator) {
case '+':
result = solution(a) + solution(b);
break;
case '-':
result = solution(a) - solution(b);
break;
case '*':
result = solution(a) * solution(b);
break;
case '/':
result = solution(a) / solution(b);
break;
}
return Math.round(result);
}
console.log(rom2num('II + III'))
прошу помочь, только без регулярных выражений, я их еще не изучал, заранее - большое спасибо!!