Advertisement
audipower

commandInterpretor

Jun 27th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function commandInterpretor(input) {
  2.     let numsArr = input.shift().split(" ").filter(x => x !== "");
  3.  
  4.     for (let i = 0; i < numsArr.length; i++) {
  5.         let ascii = numsArr[i].charCodeAt(0);
  6.         if ((ascii < 65 || ascii > 90) && (ascii < 97 || ascii > 122)) {
  7.             numsArr[i] = Number(numsArr[i])
  8.         }
  9.     }
  10.  
  11.     for (let i = 0; i < input.length; i++) {
  12.         let line = input[i].split(" ");
  13.         let command = line.shift();
  14.         if (command === "end") {
  15.             break;
  16.         } else if (command === "reverse") {
  17.             let fromIndex = Number(line[1]);
  18.             let countNums = Number(line[3]);
  19.             if (typeof numsArr[fromIndex] !== "undefined" && typeof numsArr[fromIndex + countNums] !== "undefined") {
  20.                 let takeElements = numsArr.splice(fromIndex, countNums);
  21.                 let count = 0;
  22.                 for (let j = fromIndex; j < countNums + fromIndex; j++) {
  23.                     numsArr.splice(fromIndex, 0, takeElements[count]);
  24.                     count++;
  25.                 }
  26.             } else {
  27.                 console.log("Invalid input parameters.");
  28.             }
  29.         } else if (command === "sort") {
  30.             let fromIndex = Number(line[1]);
  31.             let countNums = Number(line[3]);
  32.             if (typeof numsArr[fromIndex] !== "undefined" && typeof numsArr[fromIndex + countNums] !== "undefined") {
  33.                 let takeElements = numsArr.splice(fromIndex, countNums);
  34.                 takeElements.sort().reverse();
  35.                 let count = 0;
  36.                 for (let j = fromIndex; j < countNums + fromIndex; j++) {
  37.                     numsArr.splice(fromIndex, 0, takeElements[count]);
  38.                     count++;
  39.                 }
  40.             } else {
  41.                 console.log("Invalid input parameters.");
  42.             }
  43.         } else if (command === "rollLeft") {
  44.             let times = Number(line[0]);
  45.             let rotate = times % numsArr.length;
  46.             if (times > 0) {
  47.                 for (let j = 0; j < rotate; j++) {
  48.                     let takeFront = numsArr.shift();
  49.                     numsArr.push(takeFront);
  50.                 }
  51.             } else {
  52.                 console.log("Invalid input parameters.");
  53.             }
  54.         } else if (command === "rollRight") {
  55.             let times = Number(line[0]);
  56.             let rotate = times % numsArr.length;
  57.             if (times > 0) {
  58.                 for (let j = 0; j < rotate; j++) {
  59.                     let takeFront = numsArr.pop();
  60.                     numsArr.unshift(takeFront);
  61.                 }
  62.             } else {
  63.                 console.log("Invalid input parameters.");
  64.             }
  65.         }
  66.  
  67.     }
  68.     let result = "";
  69.     for (let i = 0; i < numsArr.length; i++) {
  70.         let char = numsArr[i];
  71.         if (i === 0) {
  72.             result += `[${char}`;
  73.         } else if (i > 0 && i < numsArr.length - 1) {
  74.             result += `, ${char}`
  75.         } else if (i === numsArr.length - 1) {
  76.             result += `, ${char}]`;
  77.         }
  78.     }
  79.    
  80.     console.log(result)
  81. }
  82.  
  83. commandInterpretor([
  84.     'a b c',
  85.     'rollRight 2000000000 times',
  86.     'end'
  87. ])
  88.  
  89. // commandInterpretor([
  90. //     '1 2 5 8 7 3 10  6   4 9',
  91. //     'reverse from 2 count 4',
  92. //     'rollLeft 3 times',
  93. //     'sort from 7 count 3',
  94. //     'end'
  95. // ]);
  96.  
  97. // commandInterpretor([
  98. //     '1 2 5 8 7 3 10 6 4 9',
  99. //     'sort from 0 count 7',
  100. //     'end'
  101. // ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement