From 091232a21c94778c1d083d7540dbf7d34fd62b33 Mon Sep 17 00:00:00 2001 From: Stephen McQuay Date: Wed, 31 Oct 2012 22:03:37 -0700 Subject: [PATCH] fix to keep track of path --- maze/__init__.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/maze/__init__.py b/maze/__init__.py index ef3fa36..3403dfe 100644 --- a/maze/__init__.py +++ b/maze/__init__.py @@ -12,7 +12,7 @@ class CS235Maze(object): self._data = data self._size = len(data) - def _solve(self, x, y, z): + def _solve(self, x, y, z, path=None): if x < 0 or y < 0 or z < 0 or \ x >= self._size or y >= self._size or z >= self._size: return False @@ -21,22 +21,27 @@ class CS235Maze(object): elif x == self._size - 1 and y == self._size - 1 \ and z == self._size - 1: self._data[x][y][z] = PATH + path.append((x, y, z)) return True else: self._data[x][y][z] = PATH - if self._solve(x - 1, y, z) or \ - self._solve(x + 1, y, z) or \ - self._solve(x, y - 1, z) or \ - self._solve(x, y + 1, z) or \ - self._solve(x, y, z - 1) or \ - self._solve(x, y, z + 1): + if self._solve(x - 1, y, z, path) or \ + self._solve(x + 1, y, z, path) or \ + self._solve(x, y - 1, z, path) or \ + self._solve(x, y + 1, z, path) or \ + self._solve(x, y, z - 1, path) or \ + self._solve(x, y, z + 1, path): + path.append((x, y, z)) return True else: self._data[x][y][z] = DEAD return False def solve(self): - return self._solve(0, 0, 0) + path = [] + success = self._solve(0, 0, 0, path) + path.reverse() + return success, path def __str__(self): r = derp_transpose(self._data)