Skip to content

Instantly share code, notes, and snippets.

@alexandrebvd
Created August 2, 2015 21:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexandrebvd/4662bcf446303f7c13cc to your computer and use it in GitHub Desktop.
Save alexandrebvd/4662bcf446303f7c13cc to your computer and use it in GitHub Desktop.
21.Bonfire: Roman Numeral Converter
function convert(num) {
//I V X L C D M
var roman = '';
var counter = num;
while (counter !== 0) {
console.log(counter);
if (counter >= 1000) {
for (var i = 0; i < Math.floor(counter/1000); i++) {
roman += 'M';
}
counter -= Math.floor(num/1000) * 1000;
num = counter;
}
else if (counter >= 900) {
for (var i = 0; i < Math.floor(counter/900); i++) {
roman += 'CM';
}
counter -= Math.floor(num/900) * 900;
num = counter;
}
else if (counter >= 500) {
for (var i = 0; i < Math.floor(counter/500); i++) {
roman += 'D';
}
counter -= Math.floor(num/500) * 500;
num = counter;
}
else if (counter >= 400) {
for (var i = 0; i < Math.floor(counter/400); i++) {
roman += 'CD';
}
counter -= Math.floor(num/400) * 400;
num = counter;
}
else if (counter >= 100) {
for (var i = 0; i < Math.floor(counter/100); i++) {
roman += 'C';
}
counter -= Math.floor(num/100) * 100;
num = counter;
}
else if (counter >= 90) {
for (var i = 0; i < Math.floor(counter/90); i++) {
roman += 'XC';
}
counter -= Math.floor(num/90) * 90;
num = counter;
}
else if (counter >= 50) {
for (var i = 0; i < Math.floor(counter/50); i++) {
roman += 'L';
}
counter -= Math.floor(num/50) * 50;
num = counter;
}
else if (counter >= 40) {
for (var i = 0; i < Math.floor(counter/40); i++) {
roman += 'XL';
}
counter -= Math.floor(num/40) * 40;
num = counter;
}
else if (counter >= 10) {
for (var i = 0; i < Math.floor(counter/10); i++) {
roman += 'X';
}
counter -= Math.floor(num/10) * 10;
num = counter;
}
else if (counter >= 9) {
for (var i = 0; i < Math.floor(counter/9); i++) {
roman += 'IX';
}
counter -= Math.floor(num/9) * 9;
num = counter;
}
else if (counter >= 5) {
for (var i = 0; i < Math.floor(counter/5); i++) {
roman += 'V';
}
counter -= Math.floor(num/5) * 5;
num = counter;
}
else if (counter >= 4) {
for (var i = 0; i < Math.floor(counter/4); i++) {
roman += 'IV';
}
counter -= Math.floor(num/4) * 4;
num = counter;
}
else {
for (var i = 0; i < counter; i++) {
roman += 'I';
}
counter = 0;
}
}
return roman;
}
convert(544);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment