Advertisement
Guest User

Treasure Island

a guest
Oct 23rd, 2019
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. (function main() {
  2. let grid = [['O', 'O', 'O', 'O'],
  3. ['D', 'O', 'D', 'O'],
  4. ['O', 'O', 'O', 'O'],
  5. ['O', 'D', 'D', 'D'],
  6. ['O', 'D', 'X', 'D'],
  7. ['O', 'D', 'O', 'D'],
  8. ['O', 'D', 'O', 'D'],
  9. ['O', 'O', 'O', 'O']];
  10. const minWithBFS = grid => {
  11. const isSafe = (x, y, grid) => grid[x] !== undefined && grid[x][y] !== undefined && grid[x][y] !== 'D';
  12. let steps = [[0,1], [0,-1], [1, 0], [-1, 0]];
  13. let visited = {};
  14. let Node = (x, y, step) => ({
  15. x,
  16. y,
  17. step: step,
  18. key: `${x}${y}`
  19. })
  20. let start = Node(0, 0, 0)
  21. let queue = [start];
  22. visited[start.key] = true
  23. while (queue.length > 0) {
  24. node = queue.pop();
  25. if (grid[node.x][node.y] === 'X') {
  26. return node.step;
  27. }
  28. steps.map(step => {
  29. next = Node(node.x + step[0], node.y + step[1], node.step + 1);
  30. if (visited[next.key] === undefined && isSafe(next.x, next.y, grid)) {
  31. queue.unshift(next);
  32. visited[next.key] = true;
  33. }
  34. })
  35. }
  36. return -1;
  37. }
  38. let min = minWithBFS(grid);
  39. console.log(min)
  40. return min;
  41. }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement