DvDty

Untitled

Feb 10th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function expedition(primary, secondary, targets, startingPoint) {
  2.     let steps = 1;
  3.     let primaryMatrixRows = primary.length;
  4.     let primaryMatrixCols = primary[0].length;
  5.     let secondaryMatrixRows = secondary.length;
  6.     let secondaryMatrixCols = secondary[0].length;
  7.  
  8.     for (let target of targets) {
  9.         modifyPrimary(target);
  10.     }
  11.  
  12.     let currentPosition = [startingPoint[0], startingPoint[1]];
  13.     let previousDirection;
  14.  
  15.     while (true) {
  16.         if (currentPosition[0] + 1 < primaryMatrixRows && primary[currentPosition[0] + 1][currentPosition[1]] == 0 && previousDirection != "up") {
  17.             currentPosition = [currentPosition[0] + 1, currentPosition[1]];
  18.             previousDirection = "down";
  19.         } else if (currentPosition[1] + 1 < primaryMatrixCols && primary[currentPosition[0]][currentPosition[1] + 1] == 0 && previousDirection != "left") {
  20.             currentPosition = [currentPosition[0], currentPosition[1] + 1];
  21.             previousDirection = "right";
  22.         } else if (currentPosition[0] > 0 && primary[currentPosition[0] - 1][currentPosition[1]] == 0 && previousDirection != "down") {
  23.             currentPosition = [currentPosition[0] - 1, currentPosition[1]];
  24.             previousDirection = "up";
  25.         } else if (currentPosition[1] > 0 && primary[currentPosition[0]][currentPosition[1] - 1] == 0 && previousDirection != "right") {
  26.             currentPosition = [currentPosition[0], currentPosition[1] - 1];
  27.             previousDirection = "left";
  28.         } else {
  29.             break;
  30.         }
  31.         steps++;
  32.     }
  33.  
  34.     console.log(steps);
  35.     definePosition(currentPosition);
  36.  
  37.     function modifyPrimary(coordinates) {
  38.         let row = Number(coordinates[0]);
  39.         let col = Number(coordinates[1]);
  40.         for (let i = 0; i < secondaryMatrixRows; i++) {
  41.             if (i + row < primaryMatrixRows) {
  42.                 for (let j = 0; j < secondaryMatrixCols; j++) {
  43.                     if (primary[i + row][j + col] != undefined && secondary[i][j] == 1) {
  44.                         primary[i + row][j + col] = primary[i + row][j + col] == 0 ? 1 : 0;
  45.                     }
  46.                 }
  47.             }
  48.         }
  49.     }
  50.  
  51.     function definePosition(currentPosition) {
  52.         let currentRow = currentPosition[0];
  53.         let currentCol = currentPosition[1];
  54.         if (currentRow == 0) {
  55.             console.log("Top");
  56.         } else if (currentRow == primaryMatrixRows - 1) {
  57.             console.log("Bottom");
  58.         } else if (currentCol == 0) {
  59.             console.log("Left");
  60.         } else if (currentCol == primaryMatrixCols - 1) {
  61.             console.log("Right");
  62.         } else if (currentRow < primaryMatrixRows / 2 && currentCol >= primaryMatrixCols / 2) {
  63.             console.log("Dead end 1");
  64.         } else if (currentRow < primaryMatrixRows / 2 && currentCol < primaryMatrixCols / 2) {
  65.             console.log("Dead end 2");
  66.         } else if (currentRow >= primaryMatrixRows / 2 && currentCol < primaryMatrixCols / 2) {
  67.             console.log("Dead end 3");
  68.         } else if (currentRow >= primaryMatrixRows / 2 && currentCol >= primaryMatrixCols / 2) {
  69.             console.log("Dead end 4");
  70.         }
  71.     }
  72. }
Add Comment
Please, Sign In to add comment