## Task
You are at position [0, 0] in maze NxN and you can **only** move in one of the four cardinal directions (i.e. North, East, South, West).  Return `true` if you can reach position [N-1, N-1] or `false` otherwise.
Empty positions are marked `.`. Walls are marked `W`. Start and exit positions are empty in all test cases.
## Path Finder Series:
-       [#1: can you reach the exit?](https://www.codewars.com/kata/5765870e190b1472ec0022a2)
-       [#2: shortest path](https://www.codewars.com/kata/57658bfa28ed87ecfa00058a)
-       [#3: the Alpinist](https://www.codewars.com/kata/576986639772456f6f00030c)
-       [#4: where are you?](https://www.codewars.com/kata/5a0573c446d8435b8e00009f)
-       [#5: there's someone here](https://www.codewars.com/kata/5a05969cba2a14e541000129)
def path_finder(maze):
    maze = maze.split('\n')
    mazeD = { (x,y):1 for x, e in enumerate(maze) for y, _ in enumerate(e) if _ == '.' }
    
    exit, DMap, stack = (len(maze)-1, len(maze[0])-1), {}, [(0, 0)]
    
    while stack:
        x, y = stack.pop()
        if not DMap.get((x,y)):
            DMap[(x,y)] = 1
            for xc, yc in ((x, y-1), (x, y+1), (x-1, y), (x+1, y)):
                if mazeD.get((xc,yc)):
                    stack.append((xc, yc)) 
                    
    return DMap.get(exit, 0)
def path_finder(maze):
    maze = maze.split('\n')
    mazeD = { (x,y):1 for x, e in enumerate(maze) for y, _ in enumerate(e) if _ == '.' }
    
    exit, DMap, stack = (len(maze)-1, len(maze[0])-1), {}, [(0, 0)]
    
    while stack:
        x, y = stack.pop()
        if not DMap.get((x,y)):
            DMap[(x,y)] = 1
            for xc, yc in ((x, y-1), (x, y+1), (x-1, y), (x+1, y)):
                if mazeD.get((xc,yc)):
                    stack.append((xc, yc)) 
                    
    return DMap.get(exit, 0)