Skip to content

Instantly share code, notes, and snippets.

@JaymesKat
Created December 27, 2019 02:23
Show Gist options
  • Save JaymesKat/5f52918f9b7ec29942f5b870b2491c47 to your computer and use it in GitHub Desktop.
Save JaymesKat/5f52918f9b7ec29942f5b870b2491c47 to your computer and use it in GitHub Desktop.
Convert the given number into a roman numeral.
const symbols = {
'1': 'I',
'5' : 'V',
'10' : 'X',
'50' : 'L',
'100' : 'C',
'500' : 'D',
'1000' : 'M'
};
function convertToRoman(num) {
const digits = num.toString().split('').reverse();
const numLength = digits.length;
let romanNum = [];
for(let i = 0; i < numLength; i += 1){
if(digits[i] == 0){
continue;
}
switch(i){
case 0:
romanNum.push(convertSingleDigit(digits[i]));
break;
case 1:
romanNum.push(convert2DigitNum(digits[i]));
break;
case 2:
romanNum.push(convert3DigitNum(digits[i]));
break;
default:
romanNum.push(convert4DigitNum(digits[i]));
break;
}
}
return romanNum.reverse().join('');
}
function convertSingleDigit(num){
if(num > 0 && num < 4){
return symbols['1'].repeat(num);
}
if(num == 4){
return symbols['1']+symbols['5'];
}
if(num == 5){
return symbols['5'];
}
if(num == 6){
return symbols['5']+symbols['1'];
}
if(num > 5 && num < 9){
return symbols['5'] + (symbols['1'].repeat(num%5));
}
if(num == 9){
return symbols['1']+ symbols['10']
}
}
function convert2DigitNum(num){
if(num > 0 && num < 4){
return symbols['10'].repeat(num);
}
if(num == 4){
return symbols['10']+symbols['50'];
}
if(num == 5){
return symbols['50'];
}
if(num == 6){
return symbols['50']+symbols['10'];
}
if(num > 5 && num < 9){
return symbols['50'] + (symbols['10'].repeat(num%5));
}
if(num == 9){
return symbols['10']+ symbols['100']
}
}
function convert3DigitNum(num){
if(num > 0 && num < 4){
return symbols['100'].repeat(num);
}
if(num == 4){
return symbols['100']+symbols['500'];
}
if(num == 5){
return symbols['500'];
}
if(num == 6){
return symbols['500']+symbols['100'];
}
if(num > 5 && num < 9){
return symbols['500'] + (symbols['100'].repeat(num%5));
}
if(num == 9){
return symbols['100']+ symbols['1000']
}
}
function convert4DigitNum(num){
return symbols['1000'].repeat(num);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment