您的位置:首页 > 其它

迷宫求解

2014-02-21 11:28 225 查看
[b]有了解题思路,对于一般性的算法题,只要动脑子想想关键点的实现方法,基本上都能写出来。

[/b]

[b]而剩余的工作就是到网上搜搜,是否有其它解决方法,对自己的思维也是一个锻炼。[/b]

1:借助栈,深度遍历思想。

2:当访问某点时,可能会遇到哪些不同的情况,以及针对不同情况的不同处理方案,比如死胡同,环路问题,遇到终点等。

3:如何依次访问某点的,正上,正右,正下,正左,四个邻接点。

4:我们对迷宫增加一圈外墙,可以简化一点逻辑。

5:只有正北墙上的起点可进行迷宫,只有正南墙上的终点可以出迷宫。



迷宫求解的基本思想

--------------------------------------------------------------------------------------------------------------------------

寻找迷宫所有可行路径,基于深度遍历

步骤1:将起点入栈

步骤2:取出当前栈顶元素,但不弹出

步骤3:按顺时针方向,分别访问栈顶元素的正上,正右,正下,正左四个邻接点

步骤4:如果不是死胡同,且如果是墙,则返回;

如果已在当前路径中,则返回;

如果超出边界,则返回;

如果是终点,则打印路径;

否则,将这个邻接点压入栈顶,继续步骤2

步骤5:如果是死胡同,则弹出栈顶元素,继续步骤2

--------------------------------------------------------------------------------------------------------------------------

代码实现如下,有详细注释

package com.collonn.algorithm.grf;

import java.util.Random;
import java.util.Scanner;
import java.util.Stack;

/**
 * 二维矩阵某元素的坐标
 */
class Point {
	// 第几行
	public int i;
	// 第几列
	public int j;
	// 已读取的邻接元素个数,0读取正上,1读取正右,2读取正下,3读取正左
	public int t;

	public Point(int i, int j) {
		this.i = i;
		this.j = j;
	}

	// 该元素是否是死胡同(该元素的,正上,正右,正下,正左,四个方向都找不到终点)
	public boolean deadEnd() {
		return t > 3 ? true : false;
	}

	// 以某元素为中心,按顺时针方向,依次取该元素的,正上,正右,正下,正左,四个邻接元素
	// 如果超出边界,则返回null,如果这四个邻接元素都获取过,则返回null
	public Point getNeighBour() {
		Point point = null;

		switch (t) {
		// 正上元素
		case 0: {
			if (this.i > 0) {
				point = new Point(this.i - 1, j);
			}
			break;
		}
		// 正右元素
		case 1: {
			point = new Point(i, j + 1);
			break;
		}
		// 正下元素
		case 2: {
			point = new Point(i + 1, j);
			break;
		}
		// 正左元素
		case 3: {
			point = new Point(i, j - 1);
			break;
		}
		default: {
			return point;
		}
		}

		t++;
		return point;
	}

	// 重写equals()方法
	@Override
	public boolean equals(Object obj) {
		if (!(obj instanceof Point)) {
			return false;
		}

		Point point = (Point) obj;
		if (point.i == this.i && point.j == this.j) {
			return true;
		} else {
			return false;
		}
	}

	// 重写hashCode()方法
	@Override
	public int hashCode() {
		return (String.valueOf(i) + String.valueOf(j)).hashCode();
	}
}

/**
 * 迷宫求解(二维矩阵)
 */
public class Maze {
	// 迷宫的二维矩阵存储
	private int[][] matirx;
	// 迷宫起点
	private Point start;
	// 迷宫终点
	private Point end;

	public Maze(int i, int j) {
		this.matirx = new int[i][j];
		System.out.printf("\nmatirx, i=%d, j=%d", i, j);
	}

	// 打印普通迷宫
	private void printMatrix() {
		System.out.printf("\n----------------- matrix -----------------");
		System.out.printf("\n%4s", "");
		for (int i = 0; i < this.matirx.length; i++) {
			System.out.printf("%2d", i);
		}
		System.out.printf("\n----");
		for (int i = 0; i < this.matirx.length; i++) {
			System.out.printf("%s", "--");
		}
		System.out.printf("\n");
		for (int i = 0; i < this.matirx.length; i++) {
			System.out.printf("%2s%2s", i, "|");
			for (int j = 0; j < this.matirx[0].length; j++) {
				System.out.printf("%2d", this.matirx[i][j]);
			}
			System.out.print("\n");
		}
		System.out.println("----------------- matrix -----------------");
	}

	// 迷宫手动初始化
	private void initMaze2() {
		this.start = new Point(0, 3);
		this.end = new Point(8, 6);

		this.matirx = new int[9][9];
		// ------------------------{0, 1, 2, 3, 4, 5, 6, 7, 8}
		this.matirx[0] = new int[] { 1, 1, 1, 0, 1, 1, 1, 1, 1 };
		this.matirx[1] = new int[] { 1, 1, 1, 0, 0, 0, 0, 0, 1 };
		this.matirx[2] = new int[] { 1, 1, 1, 0, 1, 1, 0, 1, 1 };
		this.matirx[3] = new int[] { 1, 0, 0, 0, 0, 0, 1, 1, 1 };
		this.matirx[4] = new int[] { 1, 0, 1, 1, 1, 0, 1, 1, 1 };
		this.matirx[5] = new int[] { 1, 0, 0, 0, 0, 0, 1, 1, 1 };
		this.matirx[6] = new int[] { 1, 1, 0, 1, 0, 0, 0, 1, 1 };
		this.matirx[7] = new int[] { 1, 1, 0, 0, 0, 1, 0, 1, 1 };
		this.matirx[8] = new int[] { 1, 1, 1, 1, 1, 1, 0, 1, 1 };
	}

	// 迷宫自动初始化
	private void initMaze() {
		int i = this.matirx.length;
		int j = this.matirx[0].length;

		this.matirx = new int[i][j];

		// 初始全部设置为墙
		for (int m = 0; m < i; m++) {
			for (int n = 0; n < j; n++) {
				this.matirx[m]
 = 1;
			}
		}

		// 随机设置通行点
		Random rd = new Random();
		int ii = -1;
		int jj = -1;
		for (int k = 0; k < (i * j) / 2; k++) {
			ii = rd.nextInt(i);
			jj = rd.nextInt(j);

			// 不设置矩阵的四条边
			if (ii == 0 || ii == (this.matirx.length - 1) || jj == 0 || jj == (this.matirx[0].length - 1)) {
				continue;
			}

			this.matirx[ii][jj] = 0;
		}

		// 将起点与终点设置为通行点
		this.matirx[this.start.i][this.start.j] = 0;
		this.matirx[this.end.i][this.end.j] = 0;
	}

	// ---------------------------------- 输入迷宫的起点与终点开始 ----------------------------------
	// 控制台输入迷宫起点
	private void startPoint() throws Exception {
		while (true) {
			Scanner scanner = new Scanner(System.in);
			int i = 0;
			System.out.printf("\nstart.j:");
			int j = scanner.nextInt();

			this.start = new Point(i, j);

			if (!this.checkPoint(this.start)) {
				System.out.printf("\nnot a valid number, enter again.");
				continue;
			}

			this.matirx[this.start.i][this.start.j] = 0;

			System.out.printf("\nStart Point, i=%d, j=%d", this.start.i, this.start.j);
			break;
		}
	}

	// 控制台输入迷宫终点
	private void endPoint() throws Exception {
		while (true) {
			Scanner scanner = new Scanner(System.in);
			int i = this.matirx.length - 1;
			System.out.printf("\nend.j:");
			int j = scanner.nextInt();

			this.end = new Point(i, j);

			if (!this.checkPoint(this.end)) {
				System.out.printf("\nnot a valid number, enter again.");
				continue;
			}

			this.matirx[this.end.i][this.end.j] = 0;

			System.out.printf("\nEnd Point, i=%d, j=%d", this.end.i, this.end.j);
			break;
		}
	}

	// 检查输入的起点与终点是否合法
	private boolean checkPoint(Point point) {
		boolean flag = true;

		if (point.i >= this.matirx.length) {
			flag = false;
		}

		if (point.j >= this.matirx[0].length) {
			flag = false;
		}

		return flag;
	}

	// ---------------------------------- 输入迷宫的起点与终点结束 ----------------------------------

	/**
	 * <pre>
	 * 	寻找迷宫所有可行路径,基于深度遍历
	 * 	步骤1:将起点入栈
	 * 	步骤2:取出当前栈顶元素,但不弹出
	 * 	步骤3:按顺时针方向,分别访问栈顶元素的正上,正右,正下,正左四个邻接点
	 * 	步骤4:如果不是死胡同,且
	 * 			如果是墙,则返回;
	 * 			如果已在当前路径中,则返回;
	 * 			如果超出边界,则返回;
	 * 			如果是终点,则打印路径;
	 * 			否则,将这个邻接点压入栈顶,继续步骤2
	 * 	步骤5:如果是死胡同,则弹出栈顶元素,继续步骤2
	 * </pre>
	 * 
	 * @param i 行
	 * @param j 行
	 * @throws Exception
	 */
	private void search() throws Exception {
		// 用户存储路径的当前栈
		Stack<Point> stack = new Stack<Point>();
		// 将起点压入栈顶
		stack.push(this.start);
		// 寻找路径,直到栈为空
		out: while (!stack.isEmpty()) {
			// 访问当前栈顶元素,但不弹出
			Point top = stack.peek();
			System.out.printf("\ntop,[%2d,%2d],", top.i, top.j);

			// 是否是死胡同
			while (!top.deadEnd()) {
				// 按上右下左,顺时针方向,依次访问栈顶元素的邻接点
				Point next = top.getNeighBour();
				// 起点的正上为null
				if (next == null) {
					continue;
				}

				System.out.printf("\nnext,[%2d,%2d],", next.i, next.j);

				// 探测的下一个元素不能是当前路径中的元素(即产生回路时直接探测下一个邻接点)
				if (stack.contains(next)) {
					System.out.printf("\nstack contains,[%2d,%2d],", next.i, next.j);
					continue;
				}

				// 遇到墙时,直接探测下一个邻接点
				if (this.matirx[next.i][next.j] == 1) {
					System.out.printf("\nwall,[%2d,%2d],", next.i, next.j);
					continue;
				}

				// 遇到终点时,打印当前路径
				if (next.equals(this.end)) {
					stack.push(next);
					printPath(stack);
					stack.pop();
					continue;
				}

				System.out.printf("\npush,[%2d,%2d],", next.i, next.j);
				stack.push(next);
				continue out;
			}

			// 某元素的,正上,正右,正下,正左,四个邻接元素都探测过,没有出路,弹出栈顶元素
			stack.pop();
			System.out.printf("\npop,[%2d,%2d],", top.i, top.j);
		}

		System.out.printf("\nterminal...");
	}

	// 打印路径
	private void printPath(Stack<Point> stack) {
		System.out.printf("\n...................... find path start ......................");
		System.out.printf("\n");
		// for (Point p : stack) {
		// System.out.printf("[%2d,%2d],", p.i, p.j);
		// this.matirx[p.i][p.j] = 9;
		// }
		for (int i = 0; i < this.matirx.length; i++) {
			System.out.printf("\n");
			for (int j = 0; j < this.matirx[0].length; j++) {
				if (stack.contains(new Point(i, j))) {
					System.out.printf("%2s", "#");
				} else {
					System.out.printf("%2s", this.matirx[i][j]);
				}
			}
		}
		System.out.printf("\n...................... find path enddd ......................");
	}

	public static void main(String[] args) throws Exception {
		Maze maze = new Maze(9, 9);
		// maze.enterStartPoint();
		// maze.enterEndPoint();
		// maze.initMaze();
		maze.initMaze2();
		maze.printMatrix();
		maze.search();
	}

}


打印出的探索路径如下:

matirx, i=9, j=9

----------------- matrix -----------------

0 1 2 3 4 5 6 7 8

----------------------

0 | 1 1 1 0 1 1 1 1 1

1 | 1 1 1 0 0 0 0 0 1

2 | 1 1 1 0 1 1 0 1 1

3 | 1 0 0 0 0 0 1 1 1

4 | 1 0 1 1 1 0 1 1 1

5 | 1 0 0 0 0 0 1 1 1

6 | 1 1 0 1 0 0 0 1 1

7 | 1 1 0 0 0 1 0 1 1

8 | 1 1 1 1 1 1 0 1 1

----------------- matrix -----------------

top,[ 0, 3],

next,[ 0, 4],

wall,[ 0, 4],

next,[ 1, 3],

push,[ 1, 3],

top,[ 1, 3],

next,[ 0, 3],

stack contains,[ 0, 3],

next,[ 1, 4],

push,[ 1, 4],

top,[ 1, 4],

next,[ 0, 4],

wall,[ 0, 4],

next,[ 1, 5],

push,[ 1, 5],

top,[ 1, 5],

next,[ 0, 5],

wall,[ 0, 5],

next,[ 1, 6],

push,[ 1, 6],

top,[ 1, 6],

next,[ 0, 6],

wall,[ 0, 6],

next,[ 1, 7],

push,[ 1, 7],

top,[ 1, 7],

next,[ 0, 7],

wall,[ 0, 7],

next,[ 1, 8],

wall,[ 1, 8],

next,[ 2, 7],

wall,[ 2, 7],

next,[ 1, 6],

stack contains,[ 1, 6],

pop,[ 1, 7],

top,[ 1, 6],

next,[ 2, 6],

push,[ 2, 6],

top,[ 2, 6],

next,[ 1, 6],

stack contains,[ 1, 6],

next,[ 2, 7],

wall,[ 2, 7],

next,[ 3, 6],

wall,[ 3, 6],

next,[ 2, 5],

wall,[ 2, 5],

pop,[ 2, 6],

top,[ 1, 6],

next,[ 1, 5],

stack contains,[ 1, 5],

pop,[ 1, 6],

top,[ 1, 5],

next,[ 2, 5],

wall,[ 2, 5],

next,[ 1, 4],

stack contains,[ 1, 4],

pop,[ 1, 5],

top,[ 1, 4],

next,[ 2, 4],

wall,[ 2, 4],

next,[ 1, 3],

stack contains,[ 1, 3],

pop,[ 1, 4],

top,[ 1, 3],

next,[ 2, 3],

push,[ 2, 3],

top,[ 2, 3],

next,[ 1, 3],

stack contains,[ 1, 3],

next,[ 2, 4],

wall,[ 2, 4],

next,[ 3, 3],

push,[ 3, 3],

top,[ 3, 3],

next,[ 2, 3],

stack contains,[ 2, 3],

next,[ 3, 4],

push,[ 3, 4],

top,[ 3, 4],

next,[ 2, 4],

wall,[ 2, 4],

next,[ 3, 5],

push,[ 3, 5],

top,[ 3, 5],

next,[ 2, 5],

wall,[ 2, 5],

next,[ 3, 6],

wall,[ 3, 6],

next,[ 4, 5],

push,[ 4, 5],

top,[ 4, 5],

next,[ 3, 5],

stack contains,[ 3, 5],

next,[ 4, 6],

wall,[ 4, 6],

next,[ 5, 5],

push,[ 5, 5],

top,[ 5, 5],

next,[ 4, 5],

stack contains,[ 4, 5],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 5],

push,[ 6, 5],

top,[ 6, 5],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 6, 6],

push,[ 6, 6],

top,[ 6, 6],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 7],

wall,[ 6, 7],

next,[ 7, 6],

push,[ 7, 6],

top,[ 7, 6],

next,[ 6, 6],

stack contains,[ 6, 6],

next,[ 7, 7],

wall,[ 7, 7],

next,[ 8, 6],

...................... find path start ......................

1 1 1 # 1 1 1 1 1

1 1 1 # 0 0 0 0 1

1 1 1 # 1 1 0 1 1

1 0 0 # # # 1 1 1

1 0 1 1 1 # 1 1 1

1 0 0 0 0 # 1 1 1

1 1 0 1 0 # # 1 1

1 1 0 0 0 1 # 1 1

1 1 1 1 1 1 # 1 1

...................... find path enddd ......................

next,[ 7, 5],

wall,[ 7, 5],

pop,[ 7, 6],

top,[ 6, 6],

next,[ 6, 5],

stack contains,[ 6, 5],

pop,[ 6, 6],

top,[ 6, 5],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 6, 4],

push,[ 6, 4],

top,[ 6, 4],

next,[ 5, 4],

push,[ 5, 4],

top,[ 5, 4],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 6, 4],

stack contains,[ 6, 4],

next,[ 5, 3],

push,[ 5, 3],

top,[ 5, 3],

next,[ 4, 3],

wall,[ 4, 3],

next,[ 5, 4],

stack contains,[ 5, 4],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 5, 2],

push,[ 5, 2],

top,[ 5, 2],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 3],

stack contains,[ 5, 3],

next,[ 6, 2],

push,[ 6, 2],

top,[ 6, 2],

next,[ 5, 2],

stack contains,[ 5, 2],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 2],

push,[ 7, 2],

top,[ 7, 2],

next,[ 6, 2],

stack contains,[ 6, 2],

next,[ 7, 3],

push,[ 7, 3],

top,[ 7, 3],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 4],

push,[ 7, 4],

top,[ 7, 4],

next,[ 6, 4],

stack contains,[ 6, 4],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 8, 4],

wall,[ 8, 4],

next,[ 7, 3],

stack contains,[ 7, 3],

pop,[ 7, 4],

top,[ 7, 3],

next,[ 8, 3],

wall,[ 8, 3],

next,[ 7, 2],

stack contains,[ 7, 2],

pop,[ 7, 3],

top,[ 7, 2],

next,[ 8, 2],

wall,[ 8, 2],

next,[ 7, 1],

wall,[ 7, 1],

pop,[ 7, 2],

top,[ 6, 2],

next,[ 6, 1],

wall,[ 6, 1],

pop,[ 6, 2],

top,[ 5, 2],

next,[ 5, 1],

push,[ 5, 1],

top,[ 5, 1],

next,[ 4, 1],

push,[ 4, 1],

top,[ 4, 1],

next,[ 3, 1],

push,[ 3, 1],

top,[ 3, 1],

next,[ 2, 1],

wall,[ 2, 1],

next,[ 3, 2],

push,[ 3, 2],

top,[ 3, 2],

next,[ 2, 2],

wall,[ 2, 2],

next,[ 3, 3],

stack contains,[ 3, 3],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 3, 1],

stack contains,[ 3, 1],

pop,[ 3, 2],

top,[ 3, 1],

next,[ 4, 1],

stack contains,[ 4, 1],

next,[ 3, 0],

wall,[ 3, 0],

pop,[ 3, 1],

top,[ 4, 1],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 1],

stack contains,[ 5, 1],

next,[ 4, 0],

wall,[ 4, 0],

pop,[ 4, 1],

top,[ 5, 1],

next,[ 5, 2],

stack contains,[ 5, 2],

next,[ 6, 1],

wall,[ 6, 1],

next,[ 5, 0],

wall,[ 5, 0],

pop,[ 5, 1],

top,[ 5, 2],

pop,[ 5, 2],

top,[ 5, 3],

pop,[ 5, 3],

top,[ 5, 4],

pop,[ 5, 4],

top,[ 6, 4],

next,[ 6, 5],

stack contains,[ 6, 5],

next,[ 7, 4],

push,[ 7, 4],

top,[ 7, 4],

next,[ 6, 4],

stack contains,[ 6, 4],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 8, 4],

wall,[ 8, 4],

next,[ 7, 3],

push,[ 7, 3],

top,[ 7, 3],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 4],

stack contains,[ 7, 4],

next,[ 8, 3],

wall,[ 8, 3],

next,[ 7, 2],

push,[ 7, 2],

top,[ 7, 2],

next,[ 6, 2],

push,[ 6, 2],

top,[ 6, 2],

next,[ 5, 2],

push,[ 5, 2],

top,[ 5, 2],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 3],

push,[ 5, 3],

top,[ 5, 3],

next,[ 4, 3],

wall,[ 4, 3],

next,[ 5, 4],

push,[ 5, 4],

top,[ 5, 4],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 6, 4],

stack contains,[ 6, 4],

next,[ 5, 3],

stack contains,[ 5, 3],

pop,[ 5, 4],

top,[ 5, 3],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 5, 2],

stack contains,[ 5, 2],

pop,[ 5, 3],

top,[ 5, 2],

next,[ 6, 2],

stack contains,[ 6, 2],

next,[ 5, 1],

push,[ 5, 1],

top,[ 5, 1],

next,[ 4, 1],

push,[ 4, 1],

top,[ 4, 1],

next,[ 3, 1],

push,[ 3, 1],

top,[ 3, 1],

next,[ 2, 1],

wall,[ 2, 1],

next,[ 3, 2],

push,[ 3, 2],

top,[ 3, 2],

next,[ 2, 2],

wall,[ 2, 2],

next,[ 3, 3],

stack contains,[ 3, 3],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 3, 1],

stack contains,[ 3, 1],

pop,[ 3, 2],

top,[ 3, 1],

next,[ 4, 1],

stack contains,[ 4, 1],

next,[ 3, 0],

wall,[ 3, 0],

pop,[ 3, 1],

top,[ 4, 1],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 1],

stack contains,[ 5, 1],

next,[ 4, 0],

wall,[ 4, 0],

pop,[ 4, 1],

top,[ 5, 1],

next,[ 5, 2],

stack contains,[ 5, 2],

next,[ 6, 1],

wall,[ 6, 1],

next,[ 5, 0],

wall,[ 5, 0],

pop,[ 5, 1],

top,[ 5, 2],

pop,[ 5, 2],

top,[ 6, 2],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 2],

stack contains,[ 7, 2],

next,[ 6, 1],

wall,[ 6, 1],

pop,[ 6, 2],

top,[ 7, 2],

next,[ 7, 3],

stack contains,[ 7, 3],

next,[ 8, 2],

wall,[ 8, 2],

next,[ 7, 1],

wall,[ 7, 1],

pop,[ 7, 2],

top,[ 7, 3],

pop,[ 7, 3],

top,[ 7, 4],

pop,[ 7, 4],

top,[ 6, 4],

next,[ 6, 3],

wall,[ 6, 3],

pop,[ 6, 4],

top,[ 6, 5],

pop,[ 6, 5],

top,[ 5, 5],

next,[ 5, 4],

push,[ 5, 4],

top,[ 5, 4],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 6, 4],

push,[ 6, 4],

top,[ 6, 4],

next,[ 5, 4],

stack contains,[ 5, 4],

next,[ 6, 5],

push,[ 6, 5],

top,[ 6, 5],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 6, 6],

push,[ 6, 6],

top,[ 6, 6],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 7],

wall,[ 6, 7],

next,[ 7, 6],

push,[ 7, 6],

top,[ 7, 6],

next,[ 6, 6],

stack contains,[ 6, 6],

next,[ 7, 7],

wall,[ 7, 7],

next,[ 8, 6],

...................... find path start ......................

1 1 1 # 1 1 1 1 1

1 1 1 # 0 0 0 0 1

1 1 1 # 1 1 0 1 1

1 0 0 # # # 1 1 1

1 0 1 1 1 # 1 1 1

1 0 0 0 # # 1 1 1

1 1 0 1 # # # 1 1

1 1 0 0 0 1 # 1 1

1 1 1 1 1 1 # 1 1

...................... find path enddd ......................

next,[ 7, 5],

wall,[ 7, 5],

pop,[ 7, 6],

top,[ 6, 6],

next,[ 6, 5],

stack contains,[ 6, 5],

pop,[ 6, 6],

top,[ 6, 5],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 6, 4],

stack contains,[ 6, 4],

pop,[ 6, 5],

top,[ 6, 4],

next,[ 7, 4],

push,[ 7, 4],

top,[ 7, 4],

next,[ 6, 4],

stack contains,[ 6, 4],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 8, 4],

wall,[ 8, 4],

next,[ 7, 3],

push,[ 7, 3],

top,[ 7, 3],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 4],

stack contains,[ 7, 4],

next,[ 8, 3],

wall,[ 8, 3],

next,[ 7, 2],

push,[ 7, 2],

top,[ 7, 2],

next,[ 6, 2],

push,[ 6, 2],

top,[ 6, 2],

next,[ 5, 2],

push,[ 5, 2],

top,[ 5, 2],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 3],

push,[ 5, 3],

top,[ 5, 3],

next,[ 4, 3],

wall,[ 4, 3],

next,[ 5, 4],

stack contains,[ 5, 4],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 5, 2],

stack contains,[ 5, 2],

pop,[ 5, 3],

top,[ 5, 2],

next,[ 6, 2],

stack contains,[ 6, 2],

next,[ 5, 1],

push,[ 5, 1],

top,[ 5, 1],

next,[ 4, 1],

push,[ 4, 1],

top,[ 4, 1],

next,[ 3, 1],

push,[ 3, 1],

top,[ 3, 1],

next,[ 2, 1],

wall,[ 2, 1],

next,[ 3, 2],

push,[ 3, 2],

top,[ 3, 2],

next,[ 2, 2],

wall,[ 2, 2],

next,[ 3, 3],

stack contains,[ 3, 3],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 3, 1],

stack contains,[ 3, 1],

pop,[ 3, 2],

top,[ 3, 1],

next,[ 4, 1],

stack contains,[ 4, 1],

next,[ 3, 0],

wall,[ 3, 0],

pop,[ 3, 1],

top,[ 4, 1],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 1],

stack contains,[ 5, 1],

next,[ 4, 0],

wall,[ 4, 0],

pop,[ 4, 1],

top,[ 5, 1],

next,[ 5, 2],

stack contains,[ 5, 2],

next,[ 6, 1],

wall,[ 6, 1],

next,[ 5, 0],

wall,[ 5, 0],

pop,[ 5, 1],

top,[ 5, 2],

pop,[ 5, 2],

top,[ 6, 2],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 2],

stack contains,[ 7, 2],

next,[ 6, 1],

wall,[ 6, 1],

pop,[ 6, 2],

top,[ 7, 2],

next,[ 7, 3],

stack contains,[ 7, 3],

next,[ 8, 2],

wall,[ 8, 2],

next,[ 7, 1],

wall,[ 7, 1],

pop,[ 7, 2],

top,[ 7, 3],

pop,[ 7, 3],

top,[ 7, 4],

pop,[ 7, 4],

top,[ 6, 4],

next,[ 6, 3],

wall,[ 6, 3],

pop,[ 6, 4],

top,[ 5, 4],

next,[ 5, 3],

push,[ 5, 3],

top,[ 5, 3],

next,[ 4, 3],

wall,[ 4, 3],

next,[ 5, 4],

stack contains,[ 5, 4],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 5, 2],

push,[ 5, 2],

top,[ 5, 2],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 3],

stack contains,[ 5, 3],

next,[ 6, 2],

push,[ 6, 2],

top,[ 6, 2],

next,[ 5, 2],

stack contains,[ 5, 2],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 2],

push,[ 7, 2],

top,[ 7, 2],

next,[ 6, 2],

stack contains,[ 6, 2],

next,[ 7, 3],

push,[ 7, 3],

top,[ 7, 3],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 4],

push,[ 7, 4],

top,[ 7, 4],

next,[ 6, 4],

push,[ 6, 4],

top,[ 6, 4],

next,[ 5, 4],

stack contains,[ 5, 4],

next,[ 6, 5],

push,[ 6, 5],

top,[ 6, 5],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 6, 6],

push,[ 6, 6],

top,[ 6, 6],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 7],

wall,[ 6, 7],

next,[ 7, 6],

push,[ 7, 6],

top,[ 7, 6],

next,[ 6, 6],

stack contains,[ 6, 6],

next,[ 7, 7],

wall,[ 7, 7],

next,[ 8, 6],

...................... find path start ......................

1 1 1 # 1 1 1 1 1

1 1 1 # 0 0 0 0 1

1 1 1 # 1 1 0 1 1

1 0 0 # # # 1 1 1

1 0 1 1 1 # 1 1 1

1 0 # # # # 1 1 1

1 1 # 1 # # # 1 1

1 1 # # # 1 # 1 1

1 1 1 1 1 1 # 1 1

...................... find path enddd ......................

next,[ 7, 5],

wall,[ 7, 5],

pop,[ 7, 6],

top,[ 6, 6],

next,[ 6, 5],

stack contains,[ 6, 5],

pop,[ 6, 6],

top,[ 6, 5],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 6, 4],

stack contains,[ 6, 4],

pop,[ 6, 5],

top,[ 6, 4],

next,[ 7, 4],

stack contains,[ 7, 4],

next,[ 6, 3],

wall,[ 6, 3],

pop,[ 6, 4],

top,[ 7, 4],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 8, 4],

wall,[ 8, 4],

next,[ 7, 3],

stack contains,[ 7, 3],

pop,[ 7, 4],

top,[ 7, 3],

next,[ 8, 3],

wall,[ 8, 3],

next,[ 7, 2],

stack contains,[ 7, 2],

pop,[ 7, 3],

top,[ 7, 2],

next,[ 8, 2],

wall,[ 8, 2],

next,[ 7, 1],

wall,[ 7, 1],

pop,[ 7, 2],

top,[ 6, 2],

next,[ 6, 1],

wall,[ 6, 1],

pop,[ 6, 2],

top,[ 5, 2],

next,[ 5, 1],

push,[ 5, 1],

top,[ 5, 1],

next,[ 4, 1],

push,[ 4, 1],

top,[ 4, 1],

next,[ 3, 1],

push,[ 3, 1],

top,[ 3, 1],

next,[ 2, 1],

wall,[ 2, 1],

next,[ 3, 2],

push,[ 3, 2],

top,[ 3, 2],

next,[ 2, 2],

wall,[ 2, 2],

next,[ 3, 3],

stack contains,[ 3, 3],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 3, 1],

stack contains,[ 3, 1],

pop,[ 3, 2],

top,[ 3, 1],

next,[ 4, 1],

stack contains,[ 4, 1],

next,[ 3, 0],

wall,[ 3, 0],

pop,[ 3, 1],

top,[ 4, 1],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 1],

stack contains,[ 5, 1],

next,[ 4, 0],

wall,[ 4, 0],

pop,[ 4, 1],

top,[ 5, 1],

next,[ 5, 2],

stack contains,[ 5, 2],

next,[ 6, 1],

wall,[ 6, 1],

next,[ 5, 0],

wall,[ 5, 0],

pop,[ 5, 1],

top,[ 5, 2],

pop,[ 5, 2],

top,[ 5, 3],

pop,[ 5, 3],

top,[ 5, 4],

pop,[ 5, 4],

top,[ 5, 5],

pop,[ 5, 5],

top,[ 4, 5],

next,[ 4, 4],

wall,[ 4, 4],

pop,[ 4, 5],

top,[ 3, 5],

next,[ 3, 4],

stack contains,[ 3, 4],

pop,[ 3, 5],

top,[ 3, 4],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 3, 3],

stack contains,[ 3, 3],

pop,[ 3, 4],

top,[ 3, 3],

next,[ 4, 3],

wall,[ 4, 3],

next,[ 3, 2],

push,[ 3, 2],

top,[ 3, 2],

next,[ 2, 2],

wall,[ 2, 2],

next,[ 3, 3],

stack contains,[ 3, 3],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 3, 1],

push,[ 3, 1],

top,[ 3, 1],

next,[ 2, 1],

wall,[ 2, 1],

next,[ 3, 2],

stack contains,[ 3, 2],

next,[ 4, 1],

push,[ 4, 1],

top,[ 4, 1],

next,[ 3, 1],

stack contains,[ 3, 1],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 1],

push,[ 5, 1],

top,[ 5, 1],

next,[ 4, 1],

stack contains,[ 4, 1],

next,[ 5, 2],

push,[ 5, 2],

top,[ 5, 2],

next,[ 4, 2],

wall,[ 4, 2],

next,[ 5, 3],

push,[ 5, 3],

top,[ 5, 3],

next,[ 4, 3],

wall,[ 4, 3],

next,[ 5, 4],

push,[ 5, 4],

top,[ 5, 4],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 5, 5],

push,[ 5, 5],

top,[ 5, 5],

next,[ 4, 5],

push,[ 4, 5],

top,[ 4, 5],

next,[ 3, 5],

push,[ 3, 5],

top,[ 3, 5],

next,[ 2, 5],

wall,[ 2, 5],

next,[ 3, 6],

wall,[ 3, 6],

next,[ 4, 5],

stack contains,[ 4, 5],

next,[ 3, 4],

push,[ 3, 4],

top,[ 3, 4],

next,[ 2, 4],

wall,[ 2, 4],

next,[ 3, 5],

stack contains,[ 3, 5],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 3, 3],

stack contains,[ 3, 3],

pop,[ 3, 4],

top,[ 3, 5],

pop,[ 3, 5],

top,[ 4, 5],

next,[ 4, 6],

wall,[ 4, 6],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 4, 4],

wall,[ 4, 4],

pop,[ 4, 5],

top,[ 5, 5],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 5],

push,[ 6, 5],

top,[ 6, 5],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 6, 6],

push,[ 6, 6],

top,[ 6, 6],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 7],

wall,[ 6, 7],

next,[ 7, 6],

push,[ 7, 6],

top,[ 7, 6],

next,[ 6, 6],

stack contains,[ 6, 6],

next,[ 7, 7],

wall,[ 7, 7],

next,[ 8, 6],

...................... find path start ......................

1 1 1 # 1 1 1 1 1

1 1 1 # 0 0 0 0 1

1 1 1 # 1 1 0 1 1

1 # # # 0 0 1 1 1

1 # 1 1 1 0 1 1 1

1 # # # # # 1 1 1

1 1 0 1 0 # # 1 1

1 1 0 0 0 1 # 1 1

1 1 1 1 1 1 # 1 1

...................... find path enddd ......................

next,[ 7, 5],

wall,[ 7, 5],

pop,[ 7, 6],

top,[ 6, 6],

next,[ 6, 5],

stack contains,[ 6, 5],

pop,[ 6, 6],

top,[ 6, 5],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 6, 4],

push,[ 6, 4],

top,[ 6, 4],

next,[ 5, 4],

stack contains,[ 5, 4],

next,[ 6, 5],

stack contains,[ 6, 5],

next,[ 7, 4],

push,[ 7, 4],

top,[ 7, 4],

next,[ 6, 4],

stack contains,[ 6, 4],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 8, 4],

wall,[ 8, 4],

next,[ 7, 3],

push,[ 7, 3],

top,[ 7, 3],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 4],

stack contains,[ 7, 4],

next,[ 8, 3],

wall,[ 8, 3],

next,[ 7, 2],

push,[ 7, 2],

top,[ 7, 2],

next,[ 6, 2],

push,[ 6, 2],

top,[ 6, 2],

next,[ 5, 2],

stack contains,[ 5, 2],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 2],

stack contains,[ 7, 2],

next,[ 6, 1],

wall,[ 6, 1],

pop,[ 6, 2],

top,[ 7, 2],

next,[ 7, 3],

stack contains,[ 7, 3],

next,[ 8, 2],

wall,[ 8, 2],

next,[ 7, 1],

wall,[ 7, 1],

pop,[ 7, 2],

top,[ 7, 3],

pop,[ 7, 3],

top,[ 7, 4],

pop,[ 7, 4],

top,[ 6, 4],

next,[ 6, 3],

wall,[ 6, 3],

pop,[ 6, 4],

top,[ 6, 5],

pop,[ 6, 5],

top,[ 5, 5],

next,[ 5, 4],

stack contains,[ 5, 4],

pop,[ 5, 5],

top,[ 5, 4],

next,[ 6, 4],

push,[ 6, 4],

top,[ 6, 4],

next,[ 5, 4],

stack contains,[ 5, 4],

next,[ 6, 5],

push,[ 6, 5],

top,[ 6, 5],

next,[ 5, 5],

push,[ 5, 5],

top,[ 5, 5],

next,[ 4, 5],

push,[ 4, 5],

top,[ 4, 5],

next,[ 3, 5],

push,[ 3, 5],

top,[ 3, 5],

next,[ 2, 5],

wall,[ 2, 5],

next,[ 3, 6],

wall,[ 3, 6],

next,[ 4, 5],

stack contains,[ 4, 5],

next,[ 3, 4],

push,[ 3, 4],

top,[ 3, 4],

next,[ 2, 4],

wall,[ 2, 4],

next,[ 3, 5],

stack contains,[ 3, 5],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 3, 3],

stack contains,[ 3, 3],

pop,[ 3, 4],

top,[ 3, 5],

pop,[ 3, 5],

top,[ 4, 5],

next,[ 4, 6],

wall,[ 4, 6],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 4, 4],

wall,[ 4, 4],

pop,[ 4, 5],

top,[ 5, 5],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 5],

stack contains,[ 6, 5],

next,[ 5, 4],

stack contains,[ 5, 4],

pop,[ 5, 5],

top,[ 6, 5],

next,[ 6, 6],

push,[ 6, 6],

top,[ 6, 6],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 7],

wall,[ 6, 7],

next,[ 7, 6],

push,[ 7, 6],

top,[ 7, 6],

next,[ 6, 6],

stack contains,[ 6, 6],

next,[ 7, 7],

wall,[ 7, 7],

next,[ 8, 6],

...................... find path start ......................

1 1 1 # 1 1 1 1 1

1 1 1 # 0 0 0 0 1

1 1 1 # 1 1 0 1 1

1 # # # 0 0 1 1 1

1 # 1 1 1 0 1 1 1

1 # # # # 0 1 1 1

1 1 0 1 # # # 1 1

1 1 0 0 0 1 # 1 1

1 1 1 1 1 1 # 1 1

...................... find path enddd ......................

next,[ 7, 5],

wall,[ 7, 5],

pop,[ 7, 6],

top,[ 6, 6],

next,[ 6, 5],

stack contains,[ 6, 5],

pop,[ 6, 6],

top,[ 6, 5],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 6, 4],

stack contains,[ 6, 4],

pop,[ 6, 5],

top,[ 6, 4],

next,[ 7, 4],

push,[ 7, 4],

top,[ 7, 4],

next,[ 6, 4],

stack contains,[ 6, 4],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 8, 4],

wall,[ 8, 4],

next,[ 7, 3],

push,[ 7, 3],

top,[ 7, 3],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 4],

stack contains,[ 7, 4],

next,[ 8, 3],

wall,[ 8, 3],

next,[ 7, 2],

push,[ 7, 2],

top,[ 7, 2],

next,[ 6, 2],

push,[ 6, 2],

top,[ 6, 2],

next,[ 5, 2],

stack contains,[ 5, 2],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 2],

stack contains,[ 7, 2],

next,[ 6, 1],

wall,[ 6, 1],

pop,[ 6, 2],

top,[ 7, 2],

next,[ 7, 3],

stack contains,[ 7, 3],

next,[ 8, 2],

wall,[ 8, 2],

next,[ 7, 1],

wall,[ 7, 1],

pop,[ 7, 2],

top,[ 7, 3],

pop,[ 7, 3],

top,[ 7, 4],

pop,[ 7, 4],

top,[ 6, 4],

next,[ 6, 3],

wall,[ 6, 3],

pop,[ 6, 4],

top,[ 5, 4],

next,[ 5, 3],

stack contains,[ 5, 3],

pop,[ 5, 4],

top,[ 5, 3],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 5, 2],

stack contains,[ 5, 2],

pop,[ 5, 3],

top,[ 5, 2],

next,[ 6, 2],

push,[ 6, 2],

top,[ 6, 2],

next,[ 5, 2],

stack contains,[ 5, 2],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 2],

push,[ 7, 2],

top,[ 7, 2],

next,[ 6, 2],

stack contains,[ 6, 2],

next,[ 7, 3],

push,[ 7, 3],

top,[ 7, 3],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 7, 4],

push,[ 7, 4],

top,[ 7, 4],

next,[ 6, 4],

push,[ 6, 4],

top,[ 6, 4],

next,[ 5, 4],

push,[ 5, 4],

top,[ 5, 4],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 5, 5],

push,[ 5, 5],

top,[ 5, 5],

next,[ 4, 5],

push,[ 4, 5],

top,[ 4, 5],

next,[ 3, 5],

push,[ 3, 5],

top,[ 3, 5],

next,[ 2, 5],

wall,[ 2, 5],

next,[ 3, 6],

wall,[ 3, 6],

next,[ 4, 5],

stack contains,[ 4, 5],

next,[ 3, 4],

push,[ 3, 4],

top,[ 3, 4],

next,[ 2, 4],

wall,[ 2, 4],

next,[ 3, 5],

stack contains,[ 3, 5],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 3, 3],

stack contains,[ 3, 3],

pop,[ 3, 4],

top,[ 3, 5],

pop,[ 3, 5],

top,[ 4, 5],

next,[ 4, 6],

wall,[ 4, 6],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 4, 4],

wall,[ 4, 4],

pop,[ 4, 5],

top,[ 5, 5],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 5],

push,[ 6, 5],

top,[ 6, 5],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 6, 6],

push,[ 6, 6],

top,[ 6, 6],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 7],

wall,[ 6, 7],

next,[ 7, 6],

push,[ 7, 6],

top,[ 7, 6],

next,[ 6, 6],

stack contains,[ 6, 6],

next,[ 7, 7],

wall,[ 7, 7],

next,[ 8, 6],

...................... find path start ......................

1 1 1 # 1 1 1 1 1

1 1 1 # 0 0 0 0 1

1 1 1 # 1 1 0 1 1

1 # # # 0 0 1 1 1

1 # 1 1 1 0 1 1 1

1 # # 0 # # 1 1 1

1 1 # 1 # # # 1 1

1 1 # # # 1 # 1 1

1 1 1 1 1 1 # 1 1

...................... find path enddd ......................

next,[ 7, 5],

wall,[ 7, 5],

pop,[ 7, 6],

top,[ 6, 6],

next,[ 6, 5],

stack contains,[ 6, 5],

pop,[ 6, 6],

top,[ 6, 5],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 6, 4],

stack contains,[ 6, 4],

pop,[ 6, 5],

top,[ 5, 5],

next,[ 5, 4],

stack contains,[ 5, 4],

pop,[ 5, 5],

top,[ 5, 4],

next,[ 6, 4],

stack contains,[ 6, 4],

next,[ 5, 3],

push,[ 5, 3],

top,[ 5, 3],

next,[ 4, 3],

wall,[ 4, 3],

next,[ 5, 4],

stack contains,[ 5, 4],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 5, 2],

stack contains,[ 5, 2],

pop,[ 5, 3],

top,[ 5, 4],

pop,[ 5, 4],

top,[ 6, 4],

next,[ 6, 5],

push,[ 6, 5],

top,[ 6, 5],

next,[ 5, 5],

push,[ 5, 5],

top,[ 5, 5],

next,[ 4, 5],

push,[ 4, 5],

top,[ 4, 5],

next,[ 3, 5],

push,[ 3, 5],

top,[ 3, 5],

next,[ 2, 5],

wall,[ 2, 5],

next,[ 3, 6],

wall,[ 3, 6],

next,[ 4, 5],

stack contains,[ 4, 5],

next,[ 3, 4],

push,[ 3, 4],

top,[ 3, 4],

next,[ 2, 4],

wall,[ 2, 4],

next,[ 3, 5],

stack contains,[ 3, 5],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 3, 3],

stack contains,[ 3, 3],

pop,[ 3, 4],

top,[ 3, 5],

pop,[ 3, 5],

top,[ 4, 5],

next,[ 4, 6],

wall,[ 4, 6],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 4, 4],

wall,[ 4, 4],

pop,[ 4, 5],

top,[ 5, 5],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 5],

stack contains,[ 6, 5],

next,[ 5, 4],

push,[ 5, 4],

top,[ 5, 4],

next,[ 4, 4],

wall,[ 4, 4],

next,[ 5, 5],

stack contains,[ 5, 5],

next,[ 6, 4],

stack contains,[ 6, 4],

next,[ 5, 3],

push,[ 5, 3],

top,[ 5, 3],

next,[ 4, 3],

wall,[ 4, 3],

next,[ 5, 4],

stack contains,[ 5, 4],

next,[ 6, 3],

wall,[ 6, 3],

next,[ 5, 2],

stack contains,[ 5, 2],

pop,[ 5, 3],

top,[ 5, 4],

pop,[ 5, 4],

top,[ 5, 5],

pop,[ 5, 5],

top,[ 6, 5],

next,[ 6, 6],

push,[ 6, 6],

top,[ 6, 6],

next,[ 5, 6],

wall,[ 5, 6],

next,[ 6, 7],

wall,[ 6, 7],

next,[ 7, 6],

push,[ 7, 6],

top,[ 7, 6],

next,[ 6, 6],

stack contains,[ 6, 6],

next,[ 7, 7],

wall,[ 7, 7],

next,[ 8, 6],

...................... find path start ......................

1 1 1 # 1 1 1 1 1

1 1 1 # 0 0 0 0 1

1 1 1 # 1 1 0 1 1

1 # # # 0 0 1 1 1

1 # 1 1 1 0 1 1 1

1 # # 0 0 0 1 1 1

1 1 # 1 # # # 1 1

1 1 # # # 1 # 1 1

1 1 1 1 1 1 # 1 1

...................... find path enddd ......................

next,[ 7, 5],

wall,[ 7, 5],

pop,[ 7, 6],

top,[ 6, 6],

next,[ 6, 5],

stack contains,[ 6, 5],

pop,[ 6, 6],

top,[ 6, 5],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 6, 4],

stack contains,[ 6, 4],

pop,[ 6, 5],

top,[ 6, 4],

next,[ 7, 4],

stack contains,[ 7, 4],

next,[ 6, 3],

wall,[ 6, 3],

pop,[ 6, 4],

top,[ 7, 4],

next,[ 7, 5],

wall,[ 7, 5],

next,[ 8, 4],

wall,[ 8, 4],

next,[ 7, 3],

stack contains,[ 7, 3],

pop,[ 7, 4],

top,[ 7, 3],

next,[ 8, 3],

wall,[ 8, 3],

next,[ 7, 2],

stack contains,[ 7, 2],

pop,[ 7, 3],

top,[ 7, 2],

next,[ 8, 2],

wall,[ 8, 2],

next,[ 7, 1],

wall,[ 7, 1],

pop,[ 7, 2],

top,[ 6, 2],

next,[ 6, 1],

wall,[ 6, 1],

pop,[ 6, 2],

top,[ 5, 2],

next,[ 5, 1],

stack contains,[ 5, 1],

pop,[ 5, 2],

top,[ 5, 1],

next,[ 6, 1],

wall,[ 6, 1],

next,[ 5, 0],

wall,[ 5, 0],

pop,[ 5, 1],

top,[ 4, 1],

next,[ 4, 0],

wall,[ 4, 0],

pop,[ 4, 1],

top,[ 3, 1],

next,[ 3, 0],

wall,[ 3, 0],

pop,[ 3, 1],

top,[ 3, 2],

pop,[ 3, 2],

top,[ 3, 3],

pop,[ 3, 3],

top,[ 2, 3],

next,[ 2, 2],

wall,[ 2, 2],

pop,[ 2, 3],

top,[ 1, 3],

next,[ 1, 2],

wall,[ 1, 2],

pop,[ 1, 3],

top,[ 0, 3],

next,[ 0, 2],

wall,[ 0, 2],

pop,[ 0, 3],

terminal...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: