Skip to content

Instantly share code, notes, and snippets.

@sankalpsingha
Created May 4, 2017 07:21
Show Gist options
  • Save sankalpsingha/33b5f236b77db16cc3e921d71803fb65 to your computer and use it in GitHub Desktop.
Save sankalpsingha/33b5f236b77db16cc3e921d71803fb65 to your computer and use it in GitHub Desktop.
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