class RomanNumerals { static toRoman(num) { const map = { 4: { 1: 'M', 2: 'MM', 3: 'MMM', 4: 'MMMM' }, 3: { 1: 'C', 2: 'CC', 3: 'CCC', 4: 'CD', 5: 'D', 6: 'DC', 7: 'DCC', 8: 'DCCC', 9: 'CM', 0: '' }, 2: { 1: 'X', 2: 'XX', 3: 'XXX', 4: 'XL', 5: 'L', 6: 'LX', 7: 'LXX', 8: 'LXXX', 9: 'XC', 0: '' }, 1: { 1: 'I', 2: 'II', 3: 'III', 4: 'IV', 5: 'V', 6: 'VI', 7: 'VII', 8: 'VIII', 9: 'IX', 0: '' } } const digits = String(num).split('').map(x => parseInt(x)) const numOfDigits = digits.length var currentIndex = 0 var romanRepresentation = '' while(currentIndex <= numOfDigits) { const orderOfDigit = numOfDigits - currentIndex romanRepresentation = romaRepresentation + map[orderOfDigit][digits[orderOfDigit]] } return romanRepresentation; } static fromRoman(str) { return 4; } }