diff options
Diffstat (limited to 'day03/part2')
-rwxr-xr-x | day03/part2 | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/day03/part2 b/day03/part2 new file mode 100755 index 0000000..a772a1e --- /dev/null +++ b/day03/part2 @@ -0,0 +1,37 @@ +#!/usr/bin/env ruby + +input = $stdin.readlines.map(&:strip).map{|x|x.split(",")} + +def map_wire(wire_segments) + wire = [] + x = 0 + y = 0 + wire_segments.each do |seg| + dir = seg[0] + len = seg[1..-1].to_i + len.times do + case dir + when "R" + x += 1 + when "L" + x -= 1 + when "U" + y += 1 + when "D" + y -= 1 + end + wire << [x, y] + end + end + wire +end + +wire1 = map_wire(input[0]) +wire2 = map_wire(input[1]) + +intersections = (wire1 & wire2) - [0,0] +steps = intersections.map do |i| + wire1.index(i) + wire2.index(i) + 2 +end + +puts steps.min |