Created
November 26, 2015 12:48
-
-
Save Dajust/65cac387de855a8090f6 to your computer and use it in GitHub Desktop.
http://www.freecodecamp.com/dajust 's solution for Bonfire: Roman Numeral Converter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Bonfire: Roman Numeral Converter | |
// Author: @dajust | |
// Challenge: http://www.freecodecamp.com/challenges/bonfire-roman-numeral-converter?solution=var%20romanNumeralMap%20%3D%20%7B%0A%20%200%20%20%20%20%3A%20%27%27%2C%20%0A%20%201%20%20%20%20%3A%20%27I%27%2C%20%0A%20%202%20%20%20%20%3A%20%27II%27%2C%20%0A%20%203%20%20%20%20%3A%20%27III%27%2C%20%0A%20%204%20%20%20%20%3A%20%27IV%27%2C%20%0A%20%205%20%20%20%20%3A%20%27V%27%2C%0A%20%206%20%20%20%20%3A%20%27VI%27%2C%0A%20%207%20%20%20%20%3A%20%27VII%27%2C%0A%20%208%20%20%20%20%3A%20%27VIII%27%2C%0A%20%209%20%20%20%20%3A%20%27IX%27%2C%0A%20%2010%20%20%20%3A%20%27X%27%2C%0A%20%2020%20%20%20%3A%20%27XX%27%2C%0A%20%2030%20%20%20%3A%20%27XXX%27%2C%0A%20%2040%20%20%20%3A%20%27XL%27%2C%0A%20%2050%20%20%20%3A%20%27L%27%2C%0A%20%2060%20%20%20%3A%20%27LX%27%2C%0A%20%2070%20%20%20%3A%20%27LXX%27%2C%0A%20%2080%20%20%20%3A%20%27LXXX%27%2C%0A%20%2090%20%20%20%3A%20%27XC%27%2C%0A%20%20100%20%20%3A%20%27C%27%2C%0A%20%20200%20%20%3A%20%27CC%27%2C%0A%20%20300%20%20%3A%20%27CCC%27%2C%0A%20%20400%20%20%3A%20%27CD%27%2C%0A%20%20500%20%20%3A%20%27D%27%2C%0A%20%20600%20%20%3A%20%27DC%27%2C%0A%20%20700%20%20%3A%20%27DCC%27%2C%0A%20%20800%20%20%3A%20%27DCCC%27%2C%0A%20%20900%20%20%3A%20%27CM%27%2C%0A%20%201000%20%3A%20%27M%27%2C%0A%20%202000%20%3A%20%27MM%27%2C%0A%20%203000%20%3A%20%27MMM%27%0A%7D%3B%0A%0A%2F%2Fbreak%20down%20number%20to%20roman%20numeral%20formart%0A%2F%2F1981%20%3D%201000%20900%2080%201%0A%2F%2Ffrom%20right%20to%20left%2C%20multiply%20number%20by%20its%20unit%20value%0Afunction%20breakDownNums%20(num)%20%7B%0A%20%20var%20numsArr%20%3D%20(%27%27%20%2B%20num).split(%27%27)%2C%0A%20%20%20%20%20%20unit%20%3D%201%2C%0A%20%20%20%20%20%20i%20%3D%20numsArr.length%20-%201%0A%20%20%3B%0A%20%20%0A%20%20for(i%3B%20i%20%3E%3D%200%3B%20i-%3D1)%20%7B%0A%20%20%20%20numsArr.splice(i%2C%201%2C%20(%2BnumsArr%5Bi%5D%20*%20unit))%3B%0A%20%20%20%20unit%20*%3D%2010%3B%0A%20%20%7D%0A%0A%20%20return%20numsArr%3B%0A%7D%0A%0Afunction%20convert(num)%20%7B%0A%20%20numsArr%20%3D%20breakDownNums(num)%3B%0A%20%20%0A%20%20return%20numsArr.map(function%20(val)%20%7B%0A%20%20%20%20%20%20return%20romanNumeralMap%5Bval%5D%3B%0A%20%20%7D)%0A%20%20.join(%27%27)%3B%0A%7D%0A%0Aconvert(36)%3B%0A | |
// Learn to Code at Free Code Camp (www.freecodecamp.com) | |
var romanNumeralMap = { | |
0 : '', | |
1 : 'I', | |
2 : 'II', | |
3 : 'III', | |
4 : 'IV', | |
5 : 'V', | |
6 : 'VI', | |
7 : 'VII', | |
8 : 'VIII', | |
9 : 'IX', | |
10 : 'X', | |
20 : 'XX', | |
30 : 'XXX', | |
40 : 'XL', | |
50 : 'L', | |
60 : 'LX', | |
70 : 'LXX', | |
80 : 'LXXX', | |
90 : 'XC', | |
100 : 'C', | |
200 : 'CC', | |
300 : 'CCC', | |
400 : 'CD', | |
500 : 'D', | |
600 : 'DC', | |
700 : 'DCC', | |
800 : 'DCCC', | |
900 : 'CM', | |
1000 : 'M', | |
2000 : 'MM', | |
3000 : 'MMM' | |
}; | |
//break down number to roman numeral formart | |
//1981 = 1000 900 80 1 | |
//from right to left, multiply number by its unit value | |
function breakDownNums (num) { | |
var numsArr = ('' + num).split(''), | |
unit = 1, | |
i = numsArr.length - 1 | |
; | |
for(i; i >= 0; i-=1) { | |
numsArr.splice(i, 1, (+numsArr[i] * unit)); | |
unit *= 10; | |
} | |
return numsArr; | |
} | |
function convert(num) { | |
numsArr = breakDownNums(num); | |
return numsArr.map(function (val) { | |
return romanNumeralMap[val]; | |
}) | |
.join(''); | |
} | |
convert(36); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment