33 lines
557 B
Ruby
33 lines
557 B
Ruby
#!/bin/env ruby
|
|
|
|
commands = File.readlines('./input').map(&:split).map{ [_1.to_sym,_2.to_i] }
|
|
# Part 1
|
|
dist, depth = 0,0
|
|
commands.each do |command, unit|
|
|
case command
|
|
when :forward
|
|
dist += unit
|
|
when :down
|
|
depth += unit
|
|
when :up
|
|
depth -= unit
|
|
end
|
|
end
|
|
|
|
p dist * depth
|
|
|
|
# Part 2
|
|
dist, depth, aim = 0,0,0
|
|
commands.each do |command, unit|
|
|
case command
|
|
when :forward
|
|
depth += aim * unit
|
|
dist += unit
|
|
when :down
|
|
aim += unit
|
|
when :up
|
|
aim -= unit
|
|
end
|
|
end
|
|
|
|
p dist * depth |