Skip to content

Commit 83de6d9

Browse files
refactor: pass the direction in so we can eventually use inversion
to remove some duplication.
1 parent 172c008 commit 83de6d9

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

lib/planar_map.rb

+12-12
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,29 @@
22
require 'location'
33
class PlanarMap
44

5-
def self.forwards(location)
6-
case location.direction
5+
def self.forwards(location, direction = location.direction)
6+
case direction
77
when 'N'
8-
Location.new(coordinates: Coordinates.new(x: location.x, y: location.y + 1), direction: location.direction)
8+
Location.new(coordinates: Coordinates.new(x: location.x, y: location.y + 1), direction: direction)
99
when 'E'
10-
Location.new(coordinates: Coordinates.new(x: (location.x + 1) % 36, y: location.y), direction: location.direction)
10+
Location.new(coordinates: Coordinates.new(x: (location.x + 1) % 36, y: location.y), direction: direction)
1111
when 'S'
12-
Location.new(coordinates: Coordinates.new(x: location.x, y: location.y - 1), direction: location.direction)
12+
Location.new(coordinates: Coordinates.new(x: location.x, y: location.y - 1), direction: direction)
1313
when 'W'
14-
Location.new(coordinates: Coordinates.new(x: (location.x - 1) % 36, y: location.y), direction: location.direction)
14+
Location.new(coordinates: Coordinates.new(x: (location.x - 1) % 36, y: location.y), direction: direction)
1515
end
1616
end
1717

18-
def self.backwards(location)
19-
case location.direction
18+
def self.backwards(location, direction = location.direction)
19+
case direction
2020
when 'N'
21-
Location.new(coordinates: Coordinates.new(x: location.x, y: location.y - 1), direction: location.direction)
21+
Location.new(coordinates: Coordinates.new(x: location.x, y: location.y - 1), direction: direction)
2222
when 'E'
23-
Location.new(coordinates: Coordinates.new(x: (location.x - 1) % 36, y: location.y), direction: location.direction)
23+
Location.new(coordinates: Coordinates.new(x: (location.x - 1) % 36, y: location.y), direction: direction)
2424
when 'S'
25-
Location.new(coordinates: Coordinates.new(x: location.x, y: location.y + 1), direction: location.direction)
25+
Location.new(coordinates: Coordinates.new(x: location.x, y: location.y + 1), direction: direction)
2626
when 'W'
27-
Location.new(coordinates: Coordinates.new(x: (location.x + 1) % 36, y: location.y), direction: location.direction)
27+
Location.new(coordinates: Coordinates.new(x: (location.x + 1) % 36, y: location.y), direction: direction)
2828
end
2929
end
3030

0 commit comments

Comments
 (0)