Advertisement
Guest User

Untitled

a guest
Aug 27th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. function convertToRoman(num) {
  2. //turn num into an arr of nums
  3. //1st turn num into str, 2nd turn str into arr of chars, 3rd turn each char into num
  4. var numArr = num.toString().split("").map(Number);
  5. //reverse array to make pushing the roman numerals easier
  6. numArr.reverse();
  7. //create array of roman numerals to push into newArray to be returned
  8. var ones = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
  9. var tens = ["X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"];
  10. var hundreds = ["C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
  11. var thousands = ["M", "MM", "MMM"];
  12.  
  13. var newArr = [];//newArr to be returned in place of num
  14. var digitTracker = 0;//for keeping track of ones place, tens place, etc.
  15.  
  16. for (var i = 0; i < numArr.length; i++){
  17. if (digitTracker === 0){
  18. newArr.push(ones[numArr[i] - 1]);
  19. digitTracker++;//after updating digitTracker, now we can move on to tens place
  20. } else if (digitTracker == 1){
  21. newArr.push(tens[numArr[i] - 1]);
  22. digitTracker++;
  23. } else if (digitTracker == 2){
  24. newArr.push(hundreds[numArr[i] - 1]);
  25. digitTracker++;
  26. } else if (digitTracker == 3){
  27. newArr.push(thousands[numArr[i] - 1]);
  28. }
  29.  
  30. }
  31.  
  32. var romanNum = newArr.reverse().join("");
  33. return romanNum;
  34. }
  35.  
  36. convertToRoman(99);
  37.  
  38. /*The code below has twice as many lines of code; it works, but the code above
  39. works as well, and has less lines of code*/
  40.  
  41. /*
  42. function convertToRoman(num) {
  43. //turn num into an arr of nums
  44. //1st turn num into str, 2nd turn str into arr of chars, 3rd turn each char into num
  45. var numArr = num.toString().split("").map(Number);
  46. var ones = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
  47. var tens = ["X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"];
  48. var hundreds = ["C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
  49. var thousands = ["M", "MM", "MMM"];
  50. var strArr = [];//create new strArr for pushing the roman letters into
  51.  
  52. var romanArrCounter = 0;
  53. var numArrCounter = numArr.length - 1;//only move if number is replaced with roman letter
  54. var digitTracker = 1;
  55.  
  56. while (numArrCounter > -1){
  57. if (numArr[numArrCounter] == romanArrCounter){
  58. if (digitTracker == 1){//for one's position
  59. //if digit !== null (i.e. digit is not 0)
  60. if (numArr[numArrCounter] !== 0){
  61. numArr.splice(numArrCounter, 1, ones[romanArrCounter - 1]);
  62. numArrCounter--;
  63. romanArrCounter = 0;
  64. digitTracker++;
  65. } else {//if digit is 0, just replace it with ""
  66. numArr.splice(numArrCounter - (numArrCounter + 1), 1, "");
  67. numArrCounter--;
  68. romanArrCounter = 0;
  69. digitTracker++;
  70. }
  71. } else if (digitTracker == 2){//for ten's position
  72. if (numArr[numArrCounter] !== 0){
  73. numArr.splice(numArrCounter, 1, tens[romanArrCounter - 1]);
  74. numArrCounter--;
  75. romanArrCounter = 0;
  76. digitTracker++;
  77. } else {
  78. numArr.splice(numArrCounter - (numArrCounter + 2), 1, "");
  79. numArrCounter--;
  80. romanArrCounter = 0;
  81. digitTracker++;
  82. }
  83. } else if (digitTracker == 3){//for hundred's position
  84. if (numArr[numArrCounter] !== 0){
  85. numArr.splice(numArrCounter, 1, hundreds[romanArrCounter - 1]);
  86. numArrCounter--;
  87. romanArrCounter = 0;
  88. digitTracker++;
  89. } else {
  90. numArr.splice(numArrCounter - (numArrCounter + 3), 1, "");
  91. numArrCounter--;
  92. romanArrCounter = 0;
  93. digitTracker++;
  94. }
  95. } else if (digitTracker == 4){//for thousand's position
  96. if (numArr[numArrCounter] !== 0){
  97. numArr.splice(numArrCounter, 1, thousands[romanArrCounter - 1]);
  98. numArrCounter--;
  99. romanArrCounter = 0;
  100. } else {
  101. numArr.splice(numArrCounter - (numArrCounter + 4), 1, "");
  102. numArrCounter--;
  103. romanArrCounter = 0;
  104. }
  105. }
  106. } else {
  107. romanArrCounter++;
  108. }
  109. }
  110.  
  111. var romanNum = numArr.join("");
  112. return romanNum;
  113. //return numArr[numArrCounter];
  114. }
  115.  
  116. convertToRoman(3999);
  117. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement