JSFiddle - React, Tailwind, and code Playground
by Jayson Buquia
JavaScript
function solution(number){
const numeralMap = {
1: ['I', 'X', 'C', 'M'],
4: ['IV', 'XL', 'CD'],
5: ['V', 'L', 'D'],
9: ['IX', 'XC', 'CM'],
};
return String(number).split('').reverse().map((digit, index) => {
const numeral = Number(digit);
if ( numeral === 9 ) {
return numeralMap[9][index];
}
else if ( numeral >= 5 ) {
let tens = numeral - 5;
return numeralMap[5][index] + numeralMap[1][index].repeat(tens);
}
else if ( numeral === 4 ) {
return numeralMap[4][index];
}
else {
return numeralMap[1][index].repeat(numeral);
}
}).reverse().join('');
};
console.log(solution(1), 1, 'I');
console.log(solution(2), 2, 'II');
console.log(solution(3), 3, 'III');
console.log(solution(4), 4, 'IV');
console.log(solution(5), 5, 'V');
console.log(solution(9), 9, 'IX');
console.log(solution(10), 10, 'X');
console.log(solution(11), 11, 'XI');
console.log(solution(19), 19, 'XIX');
console.log(solution(22), 22, 'XXII');
console.log(solution(15), 15, 'XV');