Created
December 5, 2013 05:20
-
-
Save ltrainpr/7800520 to your computer and use it in GitHub Desktop.
Revisions
-
ltrainpr created this gist
Dec 5, 2013 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,14 @@ function toRoman(n) { var r = '', decimals = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1], roman = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']; for (var i = 0; i < decimals.length; i++) { while (n >= decimals[i]) { r += roman[i]; n -= decimals[i]; } } return r; } // This is a much more elegant solution that another person posted on Stack Exchange-Code Review 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,65 @@ var romanArray = []; var toRoman = { analyze: function(number){ romanArray = []; if (number >= 1000) { return this.thousands(number); }else if (number >= 100){ return this.hundreds(number); }else if (number >= 10) { return this.tens(number); }else{ return this.last_number(number); } }, base_function: function (number, four, nine, five, one){ if (number === 4){ romanArray.push(four); }else if(number === 9){ romanArray.push(nine); }else if(number >= 5 && number < 9){ romanArray.push(five); var remainder = number % 5; for(var i = 0; i < remainder; i++) { romanArray.push(one); } }else if (number > 0 && number < 4){ for(var e = 0; e < number; e++) { romanArray.push(one); } }else{ } return romanArray; }, thousands: function(number){ var remainder = number % 1000; var thousands = Math.floor(number / 1000); for(var e = 0; e < thousands; e++) { romanArray.push('M'); } return this.hundreds(remainder); }, hundreds: function(number) { this.base_function(Math.floor(number / 100), 'CD', 'CM', 'D', 'C'); return this.tens(number % 100); }, tens: function(number){ this.base_function(Math.floor(number/10), 'XL', 'XC', 'L', 'X'); return this.last_number(number % 10); }, last_number: function (number){ this.base_function(number, 'IV', 'IX', 'V', 'I'); return romanArray.join(''); } }; console.log(toRoman.analyze(8)); console.log(toRoman.analyze(299)); console.log(toRoman.analyze(2361));