Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function stripInputBare(string) {
  2.   return string.replace(/(\r\n|\n|\r)/gm, ",").split(",");
  3. }
  4.  
  5. const opCode = stripInputBare(inputOP);
  6. const inp = 5;
  7.  
  8. function prepareDP(pointer) {
  9.   let amountOfZeroes = "";
  10.   for (let i = pointer.length; i < 5; i++) {
  11.     amountOfZeroes += "0";
  12.   }
  13.   let preparedPointer = amountOfZeroes + pointer;
  14.   preparedPointer.split("");
  15.   return [
  16.     preparedPointer[0],
  17.     preparedPointer[1],
  18.     preparedPointer[2],
  19.     preparedPointer[3] + preparedPointer[4]
  20.   ];
  21. }
  22.  
  23. function codeInterpreter(codeArr, inputValue) {
  24.   let inp = [...inputValue];
  25.   let code = [...codeArr];
  26.   let inputInstruction = 0;
  27.  
  28.   for (let i = 0; i <= code.length; ) {
  29.     let directionPointer = prepareDP(code[i].toString());
  30.     let increment = 1;
  31.     let dP = directionPointer;
  32.     let par1 = parseInt(dP[2] == 0 ? code[code[i + 1]] : code[i + 1]);
  33.     let par2 = parseInt(dP[1] == 0 ? code[code[i + 2]] : code[i + 2]);
  34.     let par3 = parseInt(code[i + 3]);
  35.     if (dP[3] === "99") {
  36.       break;
  37.     }
  38.  
  39.     if (dP[3] === "01") {
  40.       code.splice(code[i + 3], 1, parseInt(par1) + parseInt(par2));
  41.  
  42.       i += 4;
  43.     } else if (dP[3] === "02") {
  44.       code.splice(par3, 1, parseInt(par1) * parseInt(par2));
  45.       i += 4;
  46.     } else if (dP[3] === "03") {
  47.       code.splice(code[i + 1], 1, inp[inputInstruction]);
  48.       inputInstruction += 1;
  49.  
  50.       i += 2;
  51.     } else if (dP[3] === "04") {
  52.       // console.log(`Output: ${dP[2] == 0 ? code[code[i + 1]] : code[i + 1]}`);
  53.       return dP[2] == 0 ? code[code[i + 1]] : code[i + 1];
  54.  
  55.       i += 2;
  56.     } else if (dP[3] === "05") {
  57.       if (par1 != 0) {
  58.         let inc = parseInt(par2);
  59.         i = inc;
  60.       } else {
  61.         i += 3;
  62.       }
  63.     } else if (dP[3] === "06") {
  64.       if (par1 == 0) {
  65.         let inc = parseInt(par2);
  66.  
  67.         i = inc;
  68.       } else {
  69.         i += 3;
  70.       }
  71.     } else if (dP[3] === "07") {
  72.       if (par1 < par2) {
  73.         code.splice(code[i + 3], 1, 1);
  74.       } else {
  75.         code.splice(code[i + 3], 1, 0);
  76.       }
  77.       i += 4;
  78.     } else if (dP[3] === "08") {
  79.       if (par1 == par2) {
  80.         code.splice(code[i + 3], 1, 1);
  81.       } else {
  82.         code.splice(code[i + 3], 1, 0);
  83.       }
  84.       i += 4;
  85.     }
  86.   }
  87. }
  88. //console.log(codeInterpreter(opCode, [5]));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement