svetlozar_kirkov

Goshko The Rabbit (JS Exam)

Apr 6th, 2015
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(args) {
  2.     var veggies = {
  3.         '{&}' : 0,
  4.         '{*}' : 0,
  5.         '{#}' : 0,
  6.         '{!}' : 0,
  7.     };
  8.     var visitedCells = [];
  9.     var directions = args[0].split(', ');
  10.     var wallHits = 0;
  11.     var veggiesFound = false;
  12.     var matrix = [];
  13.     var cellsPassed = false;
  14.     for (var i = 0, j = 1; i < args.length - 1; i++, j++) {
  15.         matrix[i] = args[j].split(', ');
  16.     }
  17.     var concatArr = [];
  18.     var keys = Object.keys(veggies);
  19.     var currentRow = 0;
  20.     var currentCol = 0;
  21.     for (var dir in directions) {
  22.         var hitWall = false;
  23.         if (directions[dir] === 'up') {
  24.             if (currentRow === 0) {
  25.                 wallHits++;
  26.                 hitWall = true;
  27.             }
  28.             else {
  29.                 currentRow--;
  30.                 cellsPassed = true;
  31.             }
  32.         }
  33.         else if (directions[dir] === 'down') {
  34.             if (currentRow === matrix.length - 1) {
  35.                 wallHits++;
  36.                 hitWall = true;
  37.             }
  38.             else {
  39.                 currentRow++;
  40.                 cellsPassed = true;
  41.             }
  42.         }
  43.         else if (directions[dir] === 'left') {
  44.             if (currentCol === 0) {
  45.                 wallHits++;
  46.                 hitWall = true;
  47.             }
  48.             else {
  49.                 currentCol--;
  50.                 cellsPassed = true;
  51.             }
  52.         }
  53.         else if (directions[dir] === 'right') {
  54.             if (currentCol === matrix[0].length - 1) {
  55.                 wallHits++;
  56.                 hitWall = true;
  57.             }
  58.             else {
  59.                 currentCol++;
  60.                 cellsPassed = true;
  61.             }
  62.         }
  63.         var tempStr = matrix[currentRow][currentCol];
  64.         if (visitedCells.indexOf(currentRow + '' + currentCol) < 0) {
  65.             visitedCells.push(currentRow + '' + currentCol);
  66.             for (var key in keys) {
  67.                 if (tempStr.indexOf(keys[key]) > -1 && hitWall === false) {
  68.                     veggies[keys[key]] += 1;
  69.                     veggiesFound = true;
  70.                     tempStr = tempStr.replace(keys[key], '@');
  71.                 }
  72.             }
  73.             concatArr.push(tempStr);
  74.         }
  75.     }
  76.     var finalPart;
  77.     if (cellsPassed === false) {
  78.         finalPart = 'no';
  79.     }
  80.     else {
  81.         finalPart = concatArr.join('|');
  82.     }
  83.     var finalStr = JSON.stringify(veggies).replace('{*}','*').replace('{&}','&').replace('{#}','#').replace('{!}','!').replace('}', '') +
  84.                     ',\"wall hits\":' + wallHits + '}\n' + finalPart;
  85.     console.log(finalStr);
  86. }
Advertisement
Add Comment
Please, Sign In to add comment