-
Notifications
You must be signed in to change notification settings - Fork 0
/
astar_working.py
56 lines (46 loc) · 1.15 KB
/
astar_working.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# ----------
# User Instructions:
#
# Define a function, search() that takes no input
# and returns a list
# in the form of [optimal path length, x, y]. For
# the grid shown below, your function should output
# [11, 4, 5].
#
# If there is no valid path from the start point
# to the goal, your function should return the string
# 'fail'
# ----------
# Grid format:
# 0 = Navigable space
# 1 = Occupied space
grid = [[0, 0, 1, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 1, 0],
[0, 0, 1, 1, 1, 0],
[0, 0, 0, 0, 1, 0]]
init = [0, 0]
goal = [len(grid)-1, len(grid[0])-1] # Make sure that the goal definition stays in the function.
delta = [[-1, 0 ], # go up
[ 0, -1], # go left
[ 1, 0 ], # go down
[ 0, 1 ]] # go right
delta_name = ['^', '<', 'v', '>']
cost = 1
def search():
g = 0
open = [[g,init[0],init[1]]]
g = g + cost
for d in range(len(delta)):
x = delta[d][0]
y = delta[d][1]
if grid[x][y] == 0:
if init[0]+x >= 0:
x = init[0]+x
if init[1]+y >= 0:
y = init[1]+y
open.append([g,x,y])
# for i in range(len(open)):
# if open[i][0] == 0:
# open.pop([i])
return open