diff options
| author | Gustav Sörnäs <gusso230@student.liu.se> | 2019-12-04 07:02:31 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gusso230@student.liu.se> | 2019-12-04 07:02:31 +0100 |
| commit | 831755fdc6d430bd8781da1897270cf2934bc858 (patch) | |
| tree | f1d6e5609363f98534a87eb9203a7623fb409371 /solutions/py/03-2.py | |
| download | aoc-831755fdc6d430bd8781da1897270cf2934bc858.tar.gz | |
Initial commit
Diffstat (limited to 'solutions/py/03-2.py')
| -rw-r--r-- | solutions/py/03-2.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/solutions/py/03-2.py b/solutions/py/03-2.py new file mode 100644 index 0000000..adb95a2 --- /dev/null +++ b/solutions/py/03-2.py @@ -0,0 +1,46 @@ +import math + +def intersection(l1, l2): + tmp = set(l1) + return [value for value in l2 if value in tmp] + +def man_dist(point): + return abs(point[0]) + abs(point[1]) + + +wire1 = {} +wire2 = {} +# wire {(x,y) : dist} +for wire in (wire1, wire2): + x = 0 + y = 0 + dx = 0 + dy = 0 + steps = 0 + for move in input().split(","): + if move[0] == "D": + dx = 0 + dy = -1 + elif move[0] == "U": + dx = 0 + dy = 1 + elif move[0] == "R": + dx = 1 + dy = 0 + elif move[0] == "L": + dx = -1 + dy = 0 + for i in range(int(move[1:])): + x += dx + y += dy + steps += 1 + wire[(x, y)] = steps + +points = intersection(list(wire1.keys()), list(wire2.keys())) +print(len(points)) +for point in points: + print(point, wire1[point], wire2[point]) +length = wire1[points[0]] + wire2[points[0]] +for point in points[1:]: + length = min(length, wire1[point] + wire2[point]) +print(length) |
