Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function main() {
- let grid = [['O', 'O', 'O', 'O'],
- ['D', 'O', 'D', 'O'],
- ['O', 'O', 'O', 'O'],
- ['O', 'D', 'D', 'D'],
- ['O', 'D', 'X', 'D'],
- ['O', 'D', 'O', 'D'],
- ['O', 'D', 'O', 'D'],
- ['O', 'O', 'O', 'O']];
- const minWithBFS = grid => {
- const isSafe = (x, y, grid) => grid[x] !== undefined && grid[x][y] !== undefined && grid[x][y] !== 'D';
- let steps = [[0,1], [0,-1], [1, 0], [-1, 0]];
- let visited = {};
- let Node = (x, y, step) => ({
- x,
- y,
- step: step,
- key: `${x}${y}`
- })
- let start = Node(0, 0, 0)
- let queue = [start];
- visited[start.key] = true
- while (queue.length > 0) {
- node = queue.pop();
- if (grid[node.x][node.y] === 'X') {
- return node.step;
- }
- steps.map(step => {
- next = Node(node.x + step[0], node.y + step[1], node.step + 1);
- if (visited[next.key] === undefined && isSafe(next.x, next.y, grid)) {
- queue.unshift(next);
- visited[next.key] = true;
- }
- })
- }
- return -1;
- }
- let min = minWithBFS(grid);
- console.log(min)
- return min;
- }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement