I liked my solution until I realized that I had to replace values like IIII with IV. I think that is the precise moment when I began coding shit. I was able to pass all the tests, but I am not sure whether this is still a valid solution. Any feedback would be welcome:
function convertToRoman(num) {
var alphabet = {
"I": 1,
"V": 5,
"X": 10,
"L": 50,
"C": 100,
"D": 500,
"M": 1000
}
var feedRecursive = [ 1, 5, 10, 50, 100, 500, 1000];
function recursiveConversion(value, n) {
if(value % feedRecursive[n] == 0) {
for (var i = 0; i < Math.trunc(value / feedRecursive[n]); i++) {
erg.push(Object.keys(alphabet)[n]);
}
return console.log(value);
}
if(Math.trunc(value / feedRecursive[n]) != 0) {
for (var i = 0; i < Math.trunc(value / feedRecursive[n]); i++) {
erg.push(Object.keys(alphabet)[n]);
}
value -= (Math.trunc(value / feedRecursive[n])) * feedRecursive[n];
}
console.log(n, value)
return recursiveConversion(value, n-1);
}
var erg = [];
recursiveConversion(num, Object.keys(alphabet).length - 1);
ergString = erg.join("").replace(/(IIIIV)|(IIII)\b/g, "IV").replace(/(VIIII)|(IIIIX)|(VIV)/g, "IX").replace(/(XXXXL)|(XXXX)/g, "XL").replace(/(XXXXC)|(LXXXX)|(LXL)/g,"XC").replace(/(CCCCD)/g, "CD").replace(/(CCCCM)|(DCCCC)/g, "CM");
console.log(ergString);
return ergString;
}
convertToRoman(3999);