Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function convertToRoman(num) {
- //turn num into an arr of nums
- //1st turn num into str, 2nd turn str into arr of chars, 3rd turn each char into num
- var numArr = num.toString().split("").map(Number);
- //reverse array to make pushing the roman numerals easier
- numArr.reverse();
- //create array of roman numerals to push into newArray to be returned
- var ones = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
- var tens = ["X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"];
- var hundreds = ["C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
- var thousands = ["M", "MM", "MMM"];
- var newArr = [];//newArr to be returned in place of num
- var digitTracker = 0;//for keeping track of ones place, tens place, etc.
- for (var i = 0; i < numArr.length; i++){
- if (digitTracker === 0){
- newArr.push(ones[numArr[i] - 1]);
- digitTracker++;//after updating digitTracker, now we can move on to tens place
- } else if (digitTracker == 1){
- newArr.push(tens[numArr[i] - 1]);
- digitTracker++;
- } else if (digitTracker == 2){
- newArr.push(hundreds[numArr[i] - 1]);
- digitTracker++;
- } else if (digitTracker == 3){
- newArr.push(thousands[numArr[i] - 1]);
- }
- }
- var romanNum = newArr.reverse().join("");
- return romanNum;
- }
- convertToRoman(99);
- /*The code below has twice as many lines of code; it works, but the code above
- works as well, and has less lines of code*/
- /*
- function convertToRoman(num) {
- //turn num into an arr of nums
- //1st turn num into str, 2nd turn str into arr of chars, 3rd turn each char into num
- var numArr = num.toString().split("").map(Number);
- var ones = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
- var tens = ["X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"];
- var hundreds = ["C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
- var thousands = ["M", "MM", "MMM"];
- var strArr = [];//create new strArr for pushing the roman letters into
- var romanArrCounter = 0;
- var numArrCounter = numArr.length - 1;//only move if number is replaced with roman letter
- var digitTracker = 1;
- while (numArrCounter > -1){
- if (numArr[numArrCounter] == romanArrCounter){
- if (digitTracker == 1){//for one's position
- //if digit !== null (i.e. digit is not 0)
- if (numArr[numArrCounter] !== 0){
- numArr.splice(numArrCounter, 1, ones[romanArrCounter - 1]);
- numArrCounter--;
- romanArrCounter = 0;
- digitTracker++;
- } else {//if digit is 0, just replace it with ""
- numArr.splice(numArrCounter - (numArrCounter + 1), 1, "");
- numArrCounter--;
- romanArrCounter = 0;
- digitTracker++;
- }
- } else if (digitTracker == 2){//for ten's position
- if (numArr[numArrCounter] !== 0){
- numArr.splice(numArrCounter, 1, tens[romanArrCounter - 1]);
- numArrCounter--;
- romanArrCounter = 0;
- digitTracker++;
- } else {
- numArr.splice(numArrCounter - (numArrCounter + 2), 1, "");
- numArrCounter--;
- romanArrCounter = 0;
- digitTracker++;
- }
- } else if (digitTracker == 3){//for hundred's position
- if (numArr[numArrCounter] !== 0){
- numArr.splice(numArrCounter, 1, hundreds[romanArrCounter - 1]);
- numArrCounter--;
- romanArrCounter = 0;
- digitTracker++;
- } else {
- numArr.splice(numArrCounter - (numArrCounter + 3), 1, "");
- numArrCounter--;
- romanArrCounter = 0;
- digitTracker++;
- }
- } else if (digitTracker == 4){//for thousand's position
- if (numArr[numArrCounter] !== 0){
- numArr.splice(numArrCounter, 1, thousands[romanArrCounter - 1]);
- numArrCounter--;
- romanArrCounter = 0;
- } else {
- numArr.splice(numArrCounter - (numArrCounter + 4), 1, "");
- numArrCounter--;
- romanArrCounter = 0;
- }
- }
- } else {
- romanArrCounter++;
- }
- }
- var romanNum = numArr.join("");
- return romanNum;
- //return numArr[numArrCounter];
- }
- convertToRoman(3999);
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement