Skip to content

Instantly share code, notes, and snippets.

Created July 19, 2017 20:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save anonymous/09e925960790788b050b1a5fdae1f2bc to your computer and use it in GitHub Desktop.
Save anonymous/09e925960790788b050b1a5fdae1f2bc to your computer and use it in GitHub Desktop.
function convertToRoman(num) {
var first = "";
var second = "";
var third = "";
var count = "";
var placeHolder = "";
var addFirst = "";
var addSecond = "";
var answer = "";
var test = "";
var waitingArray = [];
var roman = {
1: "I",
4: "IV",
5: "V",
9: "IX",
10: "X",
40: "XL",
50: "L",
90: "XC",
100: "C",
400: "CD",
500: "D",
900: "CM",
1000: "M"
};
if (num > 0 && num < 10) {
test = (num.toString().split(""));
first = test[0];
}
if (first >= 1 && first < 4) {
//between 1 and 3
count = first;
placeHolder = roman[1].repeat(count);
waitingArray.push(placeHolder);
} else if (first >= 4 && first < 5) {
// between 4 and 5
placeHolder = roman[4];
waitingArray.push(placeHolder);
} else if (first >= 5 && first < 6) {
// number is at 5
placeHolder = roman[5];
waitingArray.push(placeHolder);
} else if (first >= 6 && first < 9) {
// between 6 and 8
count = first - 5;
addFirst = roman[5];
addSecond = roman[1].repeat(count);
placeHolder = addFirst + addSecond;
waitingArray.push(placeHolder);
} else if (first >= 9 && first < 10) {
// number is at 9
placeHolder = roman[9];
waitingArray.push(placeHolder);
}
if (num >= 10 && num < 100) {
test = (num.toString().split(""));
first = test[0] + "0";
second = test[1];
}
// FIRST DIGIT
if (first >= 10 && first < 40) {
count = first / 10;
placeHolder = roman[10].repeat(count);
waitingArray.push(placeHolder);
} else if (first >= 40 && first < 50) {
placeHolder = roman[40];
waitingArray.push(placeHolder);
} else if (first >= 50 && first < 60) {
placeHolder = roman[50];
waitingArray.push(placeHolder);
} else if (first >= 60 && first < 90) {
count = (first - 50) / 10;
addFirst = roman[50];
addSecond = roman[10].repeat(count);
placeHolder = addFirst + addSecond;
waitingArray.push(placeHolder);
} else if (first >= 90 && first < 100) {
placeHolder = roman[90];
waitingArray.push(placeHolder);
}
// SECOND DIGIT
if (second >= 1 && second < 4) {
//between 1 and 3
count = second;
placeHolder = roman[1].repeat(count);
waitingArray.push(placeHolder);
} else if (second >= 4 && second < 5) {
// between 4 and 5
placeHolder = roman[4];
waitingArray.push(placeHolder);
} else if (second >= 5 && second < 6) {
// number is at 5
placeHolder = roman[5];
waitingArray.push(placeHolder);
} else if (second >= 6 && second < 9) {
// between 6 and 8
count = second - 5;
addFirst = roman[5];
addSecond = roman[1].repeat(count);
placeHolder = addFirst + addSecond;
waitingArray.push(placeHolder);
} else if (second >= 9 && second < 10) {
// number is at 9
placeHolder = roman[9];
waitingArray.push(placeHolder);
}
if (num > 99 && num < 1000) {
test = (num.toString().split(""));
first = test[0] + "0" + "0";
second = test[1] + "0";
third = test[2];
}
// FIRST DIGIT
if (first >= 100 && first < 400) {
// between 100 and 399
count = first / 100;
placeHolder = roman[100].repeat(count);
waitingArray.push(placeHolder);
} else if (first >= 400 && first < 500) {
// between 400 and 499
placeHolder = roman[400];
waitingArray.push(placeHolder);
} else if (first >= 500 && first <= 599) {
// between 500 and 599
placeHolder = roman[500];
waitingArray.push(placeHolder);
} else if (first < 900 && first > 500) {
// between 600 and 899
count = (first - 500) / 100;
addFirst = [roman[500]];
addSecond = [roman[100].repeat(count)];
placeHolder = addFirst + addSecond;
waitingArray.push(placeHolder);
} else if (first >= 900 && first <= 1000) {
// between 900 to 999
placeHolder = roman[900];
waitingArray.push(placeHolder);
}
// SECOND DIGIT
if (second >= 10 && second < 40) {
// between 10 & 39
count = second / 10;
placeHolder = roman[10].repeat(count);
waitingArray.push(placeHolder);
} else if (second >= 40 && second < 50) {
// between 40 and 49
placeHolder = roman[40];
waitingArray.push(placeHolder);
} else if (second >= 50 && second < 60) {
// between 50 and 59
placeHolder = roman[50];
waitingArray.push(placeHolder);
} else if (second >= 60 && second < 90) {
//between 60 and 89
count = (second - 50) / 10;
addFirst = roman[50];
addSecond = roman[10].repeat(count);
placeHolder = addFirst + addSecond;
waitingArray.push(placeHolder);
} else if (second >= 90 && second < 100) {
placeHolder = roman[90];
waitingArray.push(placeHolder);
}
//THIRD DIGIT
if (third >= 1 && third < 4) {
//between 1 and 3
count = third;
placeHolder = roman[1].repeat(count);
waitingArray.push(placeHolder);
} else if (third >= 4 && third < 5) {
// between 4 and 5
placeHolder = roman[4];
waitingArray.push(placeHolder);
} else if (third >= 5 && third < 6) {
// number is at 5
placeHolder = roman[5];
waitingArray.push(placeHolder);
} else if (third >= 6 && third < 9) {
// between 6 and 8
count = third - 5;
addFirst = roman[5];
addSecond = roman[1].repeat(count);
placeHolder = addFirst + addSecond;
waitingArray.push(placeHolder);
} else if (third >= 9 && third < 10) {
// number is at 9
placeHolder = roman[9];
waitingArray.push(placeHolder);
}
num = waitingArray.join("");
console.log(num);
}
convertToRoman(852);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment