Created
December 27, 2019 02:23
-
-
Save JaymesKat/5f52918f9b7ec29942f5b870b2491c47 to your computer and use it in GitHub Desktop.
Convert the given number into a roman numeral.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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