summaryrefslogtreecommitdiff
path: root/day-11/sol.py
diff options
context:
space:
mode:
Diffstat (limited to 'day-11/sol.py')
-rw-r--r--day-11/sol.py67
1 files changed, 0 insertions, 67 deletions
diff --git a/day-11/sol.py b/day-11/sol.py
deleted file mode 100644
index 9da8cec..0000000
--- a/day-11/sol.py
+++ /dev/null
@@ -1,67 +0,0 @@
-
-def get_neighbors(grid, current):
- neighbors = []
- y, x = current
- cur_height = ord(grid[y][x])
- if (grid[y][x] == "S"):
- cur_height = ord("a")
- for i in range(-1, 2):
- for j in range(-1, 2):
- if i == 0 and j == 0 or (i != 0 and j != 0):
- continue
- if (y + i) < 0 or (y + i) >= len(grid):
- continue
- if (x + j) < 0 or (x + j) >= len(grid[y + i]):
- continue
- new_height = ord(grid[y + i][x + j])
- if (grid[y + i][x + j] == "E"):
- new_height = ord("z")
- if abs(new_height - cur_height) <= 1 or new_height <= cur_height:
- neighbors.append((y + i, x + j))
- return neighbors
-
-def bfs(grid, start, end):
- queue = []
- queue.append(start)
- visited = {}
- visited[start] = 0
- while queue:
- current = queue.pop(0)
- if current == end:
- return visited[current]
- for neighbor in get_neighbors(grid, current):
- if neighbor not in visited:
- queue.append(neighbor)
- visited[neighbor] = visited[current] + 1
- return False
-
-def main():
- file = open("input", "r")
- grid = file.readlines()
- file.close()
-
- start = (0, 0)
- end = (0, 0)
-
- for i in range(len(grid)):
- for j in range(len(grid[i])):
- if grid[i][j] == "S":
- start = (i, j)
- elif grid[i][j] == "E":
- end = (i, j)
-
- best = bfs(grid, start, end)
- print(best)
-
- for i in range(len(grid)):
- for j in range(len(grid[i])):
- if grid[i][j] == "a":
- this_as_start = bfs(grid, (i, j), end)
- if this_as_start and this_as_start < best:
- best = this_as_start
-
- print(best)
-
-
-if __name__ == "__main__":
- main()