Skip to content

Instantly share code, notes, and snippets.

@dcortesnet
Last active February 14, 2023 12:46
Show Gist options
  • Select an option

  • Save dcortesnet/5333b3f8cb965fdcf44f218c6ba44a6a to your computer and use it in GitHub Desktop.

Select an option

Save dcortesnet/5333b3f8cb965fdcf44f218c6ba44a6a to your computer and use it in GitHub Desktop.
Javascript convertidor de números romanos
const romanSymbols = {
'1': 'I',
'2': 'II',
'3': 'III',
'4': 'IV',
'5': 'V',
'6': 'VI',
'7': 'VII',
'8': 'VIII',
'9': 'IX',
'10': 'X',
'20': 'XX',
'30': 'XXX',
'40': 'XL',
'50': 'L',
'60': 'LX',
'70': 'LXX',
'80': 'LXXX',
'90': 'XC',
'100': 'C',
'200': 'CC',
'300': 'CCC',
'400': 'CD',
'500': 'D',
'600': 'DC',
'700': 'DCC',
'800': 'DCCC',
'900': 'CM',
'1000': 'M',
'2000': 'MM',
'3000': 'MMM'
}
function convertToRoman(num) {
const strNumber = String(num);
const splitNumber = strNumber.split("");
let un;
let dc;
let cn;
let ml;
for (let index = splitNumber.length-1; index >= 0; index--) {
const element = splitNumber[index];
if(!un){
un = element;
} else if(!dc){
dc = element + "0";
} else if(!cn){
cn = element + "00";
} else if(!ml){
ml = element + "000";
}
}
if(un){
un = romanSymbols[un];
}
if(dc){
dc = romanSymbols[dc];
}
if(cn){
cn = romanSymbols[cn];
}
if(ml){
ml = romanSymbols[ml];
}
let numbersToConvert = [ml, cn, dc, un];
return numbersToConvert.reduce((romanNumber, toConvert)=> {
if(toConvert){
romanNumber += toConvert;
}
return romanNumber;
}, "");
}
console.log(convertToRoman(36));
console.log(convertToRoman(1004));
console.log(convertToRoman(891));
console.log(convertToRoman(798));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment