Advertisement
Valleri

JavaScript - 1 April 2013 - Evening - Labyrinth Escape

Jul 22nd, 2014
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Solve(args) {
  2.     var n_m = args[0].split(' ');
  3.     var n = parseInt(n_m[0]);
  4.     var m = parseInt(n_m[1]);
  5.    
  6.     var rowColsStart = args[1].split(' ');
  7.     var startingRow = parseInt(rowColsStart[0]);
  8.     var startingCol = parseInt(rowColsStart[1]);
  9.    
  10.     var matrix = [];
  11.    
  12.     for (var i = 0; i < n; i++) {
  13.         var currRow = args[i + 2];
  14.         matrix[i] = [];
  15.         for (var j = 0; j < m; j++) {
  16.             matrix[i][j] = currRow.charAt(j);
  17.         }
  18.     }
  19.    
  20.     var getValueMatrix = [];
  21.     var count = 1;
  22.    
  23.     for (var i = 0; i < n; i++) {
  24.         getValueMatrix[i] = [];
  25.         for (var j = 0; j < m; j++) {
  26.             getValueMatrix[i][j] = count++;
  27.         }
  28.     }
  29.    
  30.     var resultSum = 0;
  31.     var currPosition = '';
  32.     var prevPosition = '';
  33.     var isOut = false;
  34.     var steps = 0;
  35.    
  36.     while (true) {
  37.         currPosition = matrix[startingRow][startingCol];
  38.         resultSum += getValueMatrix[startingRow][startingCol];
  39.         steps++;
  40.         if (currPosition == 'l') {
  41.            
  42.             startingCol--;
  43.             if (prevPosition == 'r') {
  44.                 console.log("lost " + steps);
  45.                 return;
  46.             }
  47.         }
  48.         else if (currPosition == 'r') {
  49.            
  50.             startingCol++;
  51.             if (prevPosition == 'l') {
  52.                 console.log("lost " + steps);
  53.                 return;
  54.             }
  55.         }
  56.         else if (currPosition == 'd') {
  57.             startingRow++;
  58.             if (prevPosition == 'u') {
  59.                 console.log("lost " + steps);
  60.                 return;
  61.             }
  62.         }
  63.         else if (currPosition == 'u') {
  64.             startingRow--;
  65.             if (prevPosition == 'd') {
  66.                 console.log("lost " + steps);
  67.                 return;
  68.             }
  69.         }
  70.         if (startingCol < 0 || startingCol >= m || startingRow < 0 || startingRow >= n) {
  71.             isOut = true;
  72.             break;
  73.         }
  74.        
  75.        
  76.         prevPosition = currPosition;
  77.     }
  78.    
  79.     if (isOut) {
  80.         console.log("out " + resultSum);
  81.     }
  82.    
  83. }
  84.  
  85. Solve(["3 4", "1 3",
  86.  "lrrd",
  87.  "dlll",
  88.  "rddd"]
  89. );
  90.  
  91. Solve(["5 8",
  92. "0 0",
  93. "rrrrrrrd",
  94. "rludulrd",
  95. "durlddud",
  96. "urrrldud",
  97. "ulllllll"]
  98. );
  99.  
  100. Solve([
  101.  "5 8",
  102.  "0 0",
  103.  "rrrrrrrd",
  104.  "rludulrd",
  105.  "lurlddud",
  106.  "urrrldud",
  107.  "ulllllll"]
  108. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement