Created
May 4, 2017 07:21
-
-
Save sankalpsingha/33b5f236b77db16cc3e921d71803fb65 to your computer and use it in GitHub Desktop.
This file contains 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
function convertToRoman(num) { | |
var firstTable = { | |
0: '', | |
1: 'I', | |
2: 'II', | |
3: 'III', | |
4: 'IV', | |
5: 'V', | |
6: 'VI', | |
7: 'VII', | |
8: 'VIII', | |
9: 'IX' | |
}; | |
var secondTable = { | |
0: '', | |
10: 'X', | |
20: 'XX', | |
30: 'XXX', | |
40: 'XL', | |
50: 'L', | |
60: 'LX', | |
70: 'LXX', | |
80: 'LXXX', | |
90: 'XC' | |
}; | |
var thirdTable = { | |
0: '', | |
100: 'C', | |
200: 'CC', | |
300: 'CCC', | |
400: 'CD', | |
500: 'D', | |
600: 'DC', | |
700: 'DCC', | |
800: 'DCCC', | |
900: 'CM' | |
}; | |
var fifthTable = { | |
0: '', | |
1000: 'M', | |
2000: 'MM', | |
3000: 'MMM', | |
4000: 'MMMM' | |
}; | |
// if the number is less than 10. | |
if(num < 10) { | |
return firstTable[num]; | |
}else if (num == 10) { | |
return 'X'; | |
}else if (num > 10 && num < 100){ | |
var mod = num % 10; | |
return secondTable[num - mod] + firstTable[mod]; | |
}else if ( num === 100) { | |
return 'C'; | |
}else if ( num > 100 && num < 1000) { | |
var mod100 = num % 100; // 96 | |
var bigNum = num - mod100; // 800 | |
var mod10 = mod100 % 10; // 6 | |
var smNum = mod100 - mod10; // 90 | |
return thirdTable[bigNum] + secondTable[smNum] + firstTable[mod10]; | |
}else if (num === 1000) { | |
return 'M'; | |
}else if (num > 1000 && num < 5000){ | |
// 3196 | |
var mod1000 = num % 1000; // 196 | |
var vbigNum = num - mod1000; // 3000 | |
var mod100 = mod1000 % 100; // 96 | |
console.log('Mod 100:',mod100); | |
var bigNum = mod1000 - mod100; // 800 | |
console.log('Big Num: ', bigNum); | |
var mod10 = mod100 % 10; // 6 | |
var smNum = mod100 - mod10; // 90 | |
return fifthTable[vbigNum] + thirdTable[bigNum] + secondTable[smNum] + firstTable[mod10]; | |
} | |
return num; | |
} | |
convertToRoman(3999); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment