From b2608af8137854b54660084ba83f58b45d1cfa64 Mon Sep 17 00:00:00 2001 From: Ben Charlton Date: Tue, 3 Dec 2019 22:34:48 +0000 Subject: [PATCH] day 3 --- 3/3.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 3/3.py diff --git a/3/3.py b/3/3.py new file mode 100755 index 0000000..4a95adf --- /dev/null +++ b/3/3.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 + +import sys + +cgrid = {} +grids = [] + +for line in sys.stdin: + grid = {} + + instructions = line.rstrip().split(',') + pos_x = 0 + pos_y = 0 + steps = 0 + + for i in instructions: + dir = i[0] + num = int(i[1:]) + for j in range(0,num): + steps += 1 + if dir == 'U': + pos_y += 1 + elif dir == 'D': + pos_y -= 1 + elif dir == 'L': + pos_x -= 1 + elif dir == 'R': + pos_x += 1 + s = "%d,%d" % (pos_x, pos_y) + if s not in grid: + grid[s] = steps + #print (dir, num, "grid:", pos_x, pos_y) + + grids.append(grid) + # curses, it's possible for a wire to cross itself. Dirty bodge. + for pos, c in grid.items(): + if pos in cgrid: + cgrid[pos] += 1 + else: + cgrid[pos] = 1 + +least = None +leastSteps = None +for pos, c in cgrid.items(): + if c > 1: + coords = pos.split(',') + dist = abs( int(coords[0]) ) + abs( int(coords[1]) ) + allsteps = grids[0][pos] + grids[1][pos] + + if least is None or dist < least: + least = dist + if leastSteps is None or allsteps < leastSteps: + leastSteps = allsteps + #print(c, coords, dist, least, leastSteps) + +print(least, leastSteps) \ No newline at end of file