From b1ca2d049f3955392acae25e03ef0f9d34549a14 Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Mon, 12 Dec 2022 11:44:03 -0500 Subject: [PATCH] clean up day12 --- 2022/full/day12.txt | 41 ++++++++++++++++++++++++ 2022/python/day12.py | 73 +++++------------------------------------- 2022/python/matrix.py | 2 +- 2022/samples/day12.txt | 5 +++ 4 files changed, 55 insertions(+), 66 deletions(-) create mode 100644 2022/full/day12.txt create mode 100644 2022/samples/day12.txt diff --git a/2022/full/day12.txt b/2022/full/day12.txt new file mode 100644 index 0000000..3005358 --- /dev/null +++ b/2022/full/day12.txt @@ -0,0 +1,41 @@ +abacccaaaacccccccccccaaaaaacccccaaaaaaccccaaacccccccccccccccccccccccccccccccccccccccccccaaaaa +abaaccaaaacccccccccccaaaaaaccccccaaaaaaaaaaaaaccccccccccccccccccccccccccccccccccccccccccaaaaa +abaaccaaaacccccccccccaaaaacccccaaaaaaaaaaaaaaaccccccccccccccccccccccccccccccccccccccccccaaaaa +abccccccccccccccccccccaaaaacccaaaaaaaaaaaaaaaacccccccccccccccccccccccccccaaaccccccccccccaaaaa +abccccccccccccccccccccaacaacccaaaaaaaaccaaaaaccccccccccccccccccccccccccccaaaccccccccccccaccaa +abcccccccccccccaacccaaaccccccaaaaaaaaaccaaaaaccccccccccccccccccccccccccccccacccccccccccccccca +abcccccccccccaaaaaaccaaaccacccccaaaaaaacccccccccccccccccccccccccciiiicccccccddddddccccccccccc +abcccccccccccaaaaaaccaaaaaaaccccaaaaaacccccaacccccccaaaccccccccciiiiiiiicccdddddddddacaaccccc +abccccccccccccaaaaaaaaaaaaacccccaaaaaaacaaaacccccccaaaacccccccchhiiiiiiiiicddddddddddaaaccccc +abcccccccccccaaaaaaaaaaaaaacccccccaaacccaaaaaacccccaaaaccccccchhhipppppiiiijjjjjjjddddaaccccc +abcccccccccccaaaaaaaaaaaaaaccccccccccccccaaaaaccccccaaaccccccchhhpppppppiijjjjjjjjjddeeaccccc +abcccccccccccccccccaaaaaaaacccccccccccccaaaaaccccccccccccccccchhppppppppppjjqqqjjjjjeeeaacccc +abccccccccccccccccccaaaaaaaacccccccccccccccaacccccccccccccccchhhpppuuuupppqqqqqqqjjjeeeaacccc +abcccccccccccccccccccaacccacccccccccccccccccccccccccccccccccchhhopuuuuuuppqqqqqqqjjjeeecccccc +abacccccccccccccaaacaaaccccccccccccccccccccccccccccaaccccccchhhhoouuuuuuuqvvvvvqqqjkeeecccccc +abaccccccccccccaaaaaacccccaaccccccccccccccccccccccaaaccccccchhhooouuuxxxuvvvvvvqqqkkeeecccccc +abaccccccccccccaaaaaacccaaaaaaccccccccccccccccccaaaaaaaaccchhhhooouuxxxxuvyyyvvqqqkkeeecccccc +abcccccccccccccaaaaacccaaaaaaaccccccccccccccccccaaaaaaaaccjjhooooouuxxxxyyyyyvvqqqkkeeecccccc +abccccccccccccccaaaaaacaaaaaaaccccccccaaaccccccccaaaaaaccjjjooootuuuxxxxyyyyyvvqqkkkeeecccccc +abccccccccccccccaaaaaaaaaaaaacccccccccaaaacccccccaaaaaacjjjooootttuxxxxxyyyyvvrrrkkkeeecccccc +SbccccccccccccccccccaaaaaaaaacccccccccaaaacccccccaaaaaacjjjoootttxxxEzzzzyyvvvrrrkkkfffcccccc +abcccccccccccaaacccccaaaaaaacaaaccccccaaaccccccccaaccaacjjjoootttxxxxxyyyyyyvvvrrkkkfffcccccc +abcccccccccaaaaaacccaaaaaacccaaacacccaacccccccccccccccccjjjoootttxxxxyxyyyyyywvvrrkkkfffccccc +abcccccccccaaaaaacccaaaaaaaaaaaaaaaccaaacaaacccccaacccccjjjnnnttttxxxxyyyyyyywwwrrkkkfffccccc +abcaacacccccaaaaacccaaacaaaaaaaaaaaccaaaaaaacccccaacaaacjjjnnnntttttxxyywwwwwwwwrrrlkfffccccc +abcaaaaccccaaaaacccccccccaacaaaaaaccccaaaaaacccccaaaaacccjjjnnnnnttttwwywwwwwwwrrrrllfffccccc +abaaaaaccccaaaaaccccccaaaaaccaaaaacaaaaaaaaccccaaaaaaccccjjjjinnnntttwwwwwsssrrrrrllllffccccc +abaaaaaaccccccccccccccaaaaacaaaaaacaaaaaaaaacccaaaaaaacccciiiiinnnntswwwwssssrrrrrlllfffccccc +abacaaaaccccccccccccccaaaaaacaaccccaaaaaaaaaaccccaaaaaaccccciiiinnnssswwsssssllllllllfffccccc +abccaaccccccccccccccccaaaaaaccccccccccaaacaaaccccaaccaacccccciiiinnsssssssmmllllllllfffaacccc +abccccccccccccccccccccaaaaaaccccccccccaaaccccccccaaccccccccccciiinnmsssssmmmmlllllgggffaacccc +abcccccccccccccccaccccccaaacccccccccccaaccccccccccccccccccccccciiimmmsssmmmmmgggggggggaaacccc +abcccccccccaaaaaaaaccccccccccccccccccccccccccccaaaaaccccccccccciiimmmmmmmmmgggggggggaaacccccc +abccccccccccaaaaaaccccccccccccccccccaacccccccccaaaaacccccccccccciiimmmmmmmhhggggcaaaaaaaccccc +abccccccccccaaaaaacccccccccccccccccaacccccccccaaaaaacccccccccccciihhmmmmhhhhgccccccccaacccccc +abccccaacaaaaaaaaaaccccccccccccccccaaaccccccccaaaaaaccccccccccccchhhhhhhhhhhaaccccccccccccccc +abccccaaaaaaaaaaaaaaccccccccccaaccaaaaccccccccaaaaaacccaaacccccccchhhhhhhhaaaaccccccccccccccc +abcccaaaaaaaaaaaaaaaccccccccaaaaaacaaaacacaccccaaaccccaaaacccccccccchhhhccccaaccccccccccaaaca +abcccaaaaaacacaaacccccccccccaaaaaaaaaaaaaaacccccccccccaaaacccccccccccaaaccccccccccccccccaaaaa +abcccccaaaacccaaaccccccccccaaaaaaaaaaaaaaaaccccccccccccaaacccccccccccaaacccccccccccccccccaaaa +abcccccaacccccaacccccccccccaaaaaaaaaaaaaccccccccccccccccccccccccccccccccccccccccccccccccaaaaa diff --git a/2022/python/day12.py b/2022/python/day12.py index b1a7c4e..2cbd557 100644 --- a/2022/python/day12.py +++ b/2022/python/day12.py @@ -3,81 +3,26 @@ import matrix from dijkstar import Graph, find_path, algorithm -#def dj_walk(mx, start, end): -# def next_cost(c, val): -# if val > c+1: -# return 9999 -# else: -# return val -# -# start = start[1], start[0] -# end = end[1], end[0] -# -# # Dijkstra from RedBlobGames -# frontier = PriorityQueue() -# frontier.put(start, 0) -# came_from = dict() -# cost_so_far = dict() -# came_from[start] = None -# cost_so_far[start] = 0 -# last = None -# while not frontier.empty(): -# x, y = frontier.get() -# cur = (x, y) -# if cur == end: -# break -# for _n in matrix.get_neighbors(mx, x=x, y=y, _dict=True): -# nxt = (_n["x"], _n["y"]) -# v = _n["value"] -# -# new_cost = next_cost(cost_so_far[cur], v) -# if nxt not in cost_so_far or new_cost < cost_so_far[nxt]: -# cost_so_far[nxt] = new_cost -# priority = new_cost -# frontier.put(nxt, priority) -# came_from[nxt] = cur -# last = cur -# print(len(cost_so_far)) - criteria = lambda _cur, _neighbor: _neighbor - _cur <= 1 + + def build_graph(mx): graph = Graph() for y, row in enumerate(mx): for x, _ in enumerate(row): neighbors = matrix.valid_neighbors(mx, x=x, y=y, criteria=criteria) for neighbor in neighbors: - graph.add_edge((y, x), (neighbor['y'],neighbor['x']), 1) + graph.add_edge((y, x), (neighbor["y"], neighbor["x"]), 1) return graph - -#SEEN = [] -#def walk(mx, y, x, seen=[]): -# print(len(seen)) -# valid_next = matrix.valid_neighbors(mx, y, x, criteria=criteria) -# print(valid_next) -# matrix.highlight( mx, red=seen, green=[ *valid_next, ], blue=[ END, ],) -# for next_yx in valid_next: -# if next_yx not in seen: -# seen.append(next_yx) -# _y, _x = next_yx -# walk(mx, _y, _x, seen) -# else: -# seen.append(next_yx) - -def elev(yx): - y,x = yx - return mx[y][x] - def part1(mx): start = matrix.find_in_matrix(mx, "S") end = matrix.find_in_matrix(mx, "E") mx[start[0]][start[1]] = "a" mx[end[0]][end[1]] = "z" - matrix.apply_to_all(mx, lambda x: ord(x) - ord('a')) + matrix.apply_to_all(mx, lambda x: ord(x) - ord("a")) - #walk(mx, cur[0],cur[0], seen=[(cur[0],cur[1])]) - #dj_walk(mx, cur, END) graph = build_graph(mx) path = find_path(graph, start, end) print(len(path.nodes)) @@ -89,17 +34,15 @@ def part2(mx): mx[s[0]][s[1]] = "a" mx[end[0]][end[1]] = "z" - starts = matrix.find_in_matrix(mx, 'a', one=False) - matrix.apply_to_all(mx, lambda x: ord(x) - ord('a')) + starts = matrix.find_in_matrix(mx, "a", one=False) + matrix.apply_to_all(mx, lambda x: ord(x) - ord("a")) graph = build_graph(mx) n_counts = [] for start in starts: - #walk(mx, cur[0],cur[0], seen=[(cur[0],cur[1])]) - #dj_walk(mx, cur, END) try: path = find_path(graph, start, end) - n_counts.append(len(path.nodes)-1) + n_counts.append(len(path.nodes) - 1) except algorithm.NoPathError: pass print(n_counts) @@ -108,7 +51,7 @@ def part2(mx): def main(): mx = matrix.load_matrix_file(shared.get_fname(12), matrix.split_word_to_chr_list) - #part1(mx) + # part1(mx) part2(mx) diff --git a/2022/python/matrix.py b/2022/python/matrix.py index c9f5ff9..a67efa2 100644 --- a/2022/python/matrix.py +++ b/2022/python/matrix.py @@ -108,7 +108,7 @@ def valid_neighbors(matrix, x, y, criteria=None): neighbors = get_neighbors(matrix, x, y, _dict=True) valid = [] for neighbor in neighbors: - if criteria(cur, neighbor['value']): + if criteria(cur, neighbor["value"]): valid.append(neighbor) return valid diff --git a/2022/samples/day12.txt b/2022/samples/day12.txt new file mode 100644 index 0000000..1bd5a48 --- /dev/null +++ b/2022/samples/day12.txt @@ -0,0 +1,5 @@ +aSbqponm +abcryxxl +accszExk +acctuvwj +abdefghi