aboutsummaryrefslogtreecommitdiff
path: root/day03/part1
diff options
context:
space:
mode:
Diffstat (limited to 'day03/part1')
-rwxr-xr-xday03/part135
1 files changed, 35 insertions, 0 deletions
diff --git a/day03/part1 b/day03/part1
new file mode 100755
index 0000000..94d3b37
--- /dev/null
+++ b/day03/part1
@@ -0,0 +1,35 @@
+#!/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
+dists = intersections.map{|x,y| x.abs + y.abs} - [0]
+
+puts dists.min