remove pointless check, tabify
This commit is contained in:
parent
4cea8b4043
commit
ba924fc41c
|
@ -9,61 +9,42 @@ accszExk
|
||||||
acctuvwj
|
acctuvwj
|
||||||
abdefghi'''.strip().split('\n')
|
abdefghi'''.strip().split('\n')
|
||||||
|
|
||||||
def make_heightmap(lines: list[str]) -> tuple[ArrayLike, ArrayLike, ArrayLike]:
|
|
||||||
heightmap = np.zeros((len(lines[0]), len(lines)), dtype=dtype)
|
|
||||||
for y, line in enumerate(lines):
|
|
||||||
for x, c in enumerate(line):
|
|
||||||
if c == 'S':
|
|
||||||
heightmap[x,y] = 0
|
|
||||||
start = np.array([x,y], dtype=dtype)
|
|
||||||
elif c == 'E':
|
|
||||||
heightmap[x,y] = 25
|
|
||||||
end = np.array([x,y], dtype=dtype)
|
|
||||||
else:
|
|
||||||
heightmap[x,y] = ord(c) - ord('a')
|
|
||||||
return heightmap, start, end
|
|
||||||
|
|
||||||
# def make_cell_costs(position, heightmap):
|
def make_heightmap(lines: list[str]) -> tuple[ArrayLike, ArrayLike, ArrayLike]:
|
||||||
# init_val = 9_999_999
|
heightmap = np.zeros((len(lines[0]), len(lines)), dtype=dtype)
|
||||||
# costs = np.full_like(heightmap, init_val)
|
for y, line in enumerate(lines):
|
||||||
# pos_t = tuple(position)
|
for x, c in enumerate(line):
|
||||||
# costs[pos_t] = 0
|
if c == 'S':
|
||||||
# curr_positions = {pos_t}
|
heightmap[x,y] = 0
|
||||||
# while (costs == init_val).any() and len(curr_positions) > 0:
|
start = np.array([x,y], dtype=dtype)
|
||||||
# next_positions = set()
|
elif c == 'E':
|
||||||
# for pos_t in curr_positions:
|
heightmap[x,y] = 25
|
||||||
# n_h_limit = heightmap[pos_t] + 1
|
end = np.array([x,y], dtype=dtype)
|
||||||
# n_cost = costs[pos_t] + 1
|
else:
|
||||||
# for d in directions_array:
|
heightmap[x,y] = ord(c) - ord('a')
|
||||||
# next_t = (pos_t[0] + d[0], pos_t[1] + d[1])
|
return heightmap, start, end
|
||||||
# if (0 <= next_t[0] < heightmap.shape[0]) and (0 <= next_t[1] < heightmap.shape[1]):
|
|
||||||
# hn = heightmap[next_t]
|
|
||||||
# if n_h_limit >= hn and costs[next_t] > n_cost:
|
|
||||||
# costs[next_t] = n_cost
|
|
||||||
# next_positions.add(next_t)
|
|
||||||
# curr_positions = next_positions
|
|
||||||
# return costs
|
|
||||||
|
|
||||||
def make_reversed_cell_costs(position, heightmap):
|
def make_reversed_cell_costs(position, heightmap):
|
||||||
init_val = 9_999_999
|
init_val = 9_999_999
|
||||||
costs = np.full_like(heightmap, init_val)
|
costs = np.full_like(heightmap, init_val)
|
||||||
pos_t = tuple(position)
|
pos_t = tuple(position)
|
||||||
costs[pos_t] = 0
|
costs[pos_t] = 0
|
||||||
curr_positions = {pos_t}
|
curr_positions = {pos_t}
|
||||||
while (costs == init_val).any() and len(curr_positions) > 0:
|
while len(curr_positions) > 0:
|
||||||
next_positions = set()
|
next_positions = set()
|
||||||
for pos_t in curr_positions:
|
for pos_t in curr_positions:
|
||||||
n_h_limit = heightmap[pos_t] - 1
|
n_h_limit = heightmap[pos_t] - 1
|
||||||
n_cost = costs[pos_t] + 1
|
n_cost = costs[pos_t] + 1
|
||||||
for d in directions_array:
|
for d in directions_array:
|
||||||
next_t = (pos_t[0] + d[0], pos_t[1] + d[1])
|
next_t = (pos_t[0] + d[0], pos_t[1] + d[1])
|
||||||
if (0 <= next_t[0] < heightmap.shape[0]) and (0 <= next_t[1] < heightmap.shape[1]):
|
if (0 <= next_t[0] < heightmap.shape[0]) and (0 <= next_t[1] < heightmap.shape[1]):
|
||||||
hn = heightmap[next_t]
|
hn = heightmap[next_t]
|
||||||
if n_h_limit <= hn and costs[next_t] > n_cost:
|
if n_h_limit <= hn and costs[next_t] > n_cost:
|
||||||
costs[next_t] = n_cost
|
costs[next_t] = n_cost
|
||||||
next_positions.add(next_t)
|
next_positions.add(next_t)
|
||||||
curr_positions = next_positions
|
curr_positions = next_positions
|
||||||
return costs
|
return costs
|
||||||
|
|
||||||
# heightmap, start, end = make_heightmap(sample_lines)
|
# heightmap, start, end = make_heightmap(sample_lines)
|
||||||
heightmap, start, end = make_heightmap(lines)
|
heightmap, start, end = make_heightmap(lines)
|
||||||
|
|
Loading…
Reference in New Issue