diff options
author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-12-25 15:28:06 +0100 |
---|---|---|
committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-12-25 15:28:06 +0100 |
commit | 13d928de6e5fb1bbc6a7e2daa10d28ecee982689 (patch) | |
tree | e9330e7e20a5cad3b73d37d80120382838a22e2e /12/b.rb | |
parent | 69a8c7bb9862966b2f21dbb61e86f652f9b238f9 (diff) |
Add day 12
Diffstat (limited to '12/b.rb')
-rw-r--r-- | 12/b.rb | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -0,0 +1,43 @@ +instructions = File.readlines('input.txt').map do |line| + [line.slice(0, 1), line.slice(1, line.length).to_i] +end + +def rotate n, e, direction + case direction + when 0 + [n, e] + when 90 + [e, -n] + when 180 + [-n, -e] + when 270 + [-e, n] + end +end + +ship_n = 0 +ship_e = 0 +waypoint_n = 1 +waypoint_e = 10 + +instructions.each do |instruction| + case instruction[0] + when 'N' + waypoint_n += instruction[1] + when 'S' + waypoint_n -= instruction[1] + when 'E' + waypoint_e += instruction[1] + when 'W' + waypoint_e -= instruction[1] + when 'F' + ship_n += waypoint_n * instruction[1] + ship_e += waypoint_e * instruction[1] + when 'L' + waypoint_n, waypoint_e = rotate waypoint_n, waypoint_e, instruction[1] + when 'R' + waypoint_n, waypoint_e = rotate waypoint_n, waypoint_e, (-instruction[1] % 360) + end +end + +puts ship_n.abs + ship_e.abs |