Advertisement
Venciity

[ExamPreparation] Joro the naughty

Jul 23rd, 2014
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // решение на видео : https://www.youtube.com/watch?v=kRx5dYUrm0g
  2. function Solve(input) {
  3.     var rowsColsAndJumps = parseNumbers(input[0]);
  4.     var startPosition = parseNumbers(input[1]);
  5.  
  6.     var rows = rowsColsAndJumps[0];
  7.     var cols = rowsColsAndJumps[1];
  8.     var allJumps = rowsColsAndJumps[2];
  9.  
  10.  
  11.     var currentRow = startPosition[0];
  12.     var currentCol = startPosition[1];
  13.  
  14.     return getAnswer();
  15.  
  16.     function getAnswer() {
  17.         var field = initField();
  18.         var jumps = readJumps();
  19.  
  20.         var jumpsIndex = 0;
  21.         var escaped = false;
  22.         var sumOfNumbers = 0;
  23.         var totalJumps = 0;
  24.  
  25.         while (true) {
  26.             if (currentRow < 0 || currentRow >= rows
  27.              || currentCol < 0 || currentCol >= cols) {
  28.                 escaped = true;
  29.                 break;
  30.             }
  31.  
  32.             if (field[currentRow][currentCol] === 'X') {
  33.                 escaped = false;
  34.                 break;
  35.             }
  36.  
  37.             sumOfNumbers += field[currentRow][currentCol];
  38.             totalJumps++;
  39.  
  40.             var currentJump = jumps[jumpsIndex++];
  41.             if (jumpsIndex >= jumps.length) {
  42.                 jumpsIndex = 0;
  43.             }
  44.  
  45.             field[currentRow][currentCol] = 'X';
  46.  
  47.             currentRow += currentJump.row;
  48.             currentCol += currentJump.col;
  49.         }
  50.  
  51.  
  52.         return escaped
  53.             ? 'escaped ' + sumOfNumbers
  54.             : 'caught ' + totalJumps;
  55.     }
  56.  
  57.  
  58.     function initField() {
  59.         var field = [];
  60.         var counter = 1;
  61.         for (var i = 0; i < rows; i++) {
  62.             field[i] = [];
  63.             for (var j = 0; j < cols; j++) {
  64.                 field[i][j] = counter++; // записваме countera и го увеличаваме с едно всеки път
  65.             }
  66.         }
  67.         return field;
  68.     }
  69.  
  70.     function readJumps() {
  71.         var jumps = [];
  72.         for (var i = 2; i < 2 + allJumps; i++) {
  73.             var parsedJump = parseNumbers(input[i]);
  74.  
  75.             var currentJump = {
  76.                 row: parsedJump[0],
  77.                 col: parsedJump[1]
  78.             };
  79.             jumps.push(currentJump);
  80.         }
  81.  
  82.         return jumps;
  83.     }
  84.  
  85.     function parseNumbers(input) {
  86.         return input.split(' ').map(Number);
  87.     }
  88.  
  89. }
  90.  
  91. var input = [
  92.     '6 7 3',
  93.     '0 0',
  94.     '2 2',
  95.     '-2 2',
  96.     '3 -1'
  97. ];
  98. console.log(Solve(input));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement