class Robot::Position

Attributes

direction[R]
point[R]

Public Class Methods

new(point: Point.new(x: 0, y: 0), direction: Robot::Directions::NORTH) click to toggle source
# File lib/robot/position.rb, line 9
def initialize(point: Point.new(x: 0, y: 0), direction: Robot::Directions::NORTH)
  @point = point
  @direction = direction
end

Public Instance Methods

==(other) click to toggle source
# File lib/robot/position.rb, line 38
def ==(other)
  point == other.point && direction == other.direction
end
east() click to toggle source
# File lib/robot/position.rb, line 22
def east
  Position.new(point: point.east, direction: direction)
end
left() click to toggle source
# File lib/robot/position.rb, line 30
def left
  Position.new(point: point, direction: lefts[direction])
end
north() click to toggle source
# File lib/robot/position.rb, line 14
def north
  Position.new(point: point.north, direction: direction)
end
right() click to toggle source
# File lib/robot/position.rb, line 34
def right
  Position.new(point: point, direction: rights[direction])
end
south() click to toggle source
# File lib/robot/position.rb, line 18
def south
  Position.new(point: point.south, direction: direction)
end
to_s() click to toggle source
# File lib/robot/position.rb, line 42
def to_s
  "#{point}, #{direction}"
end
west() click to toggle source
# File lib/robot/position.rb, line 26
def west
  Position.new(point: point.west, direction: direction)
end

Private Instance Methods

lefts() click to toggle source
# File lib/robot/position.rb, line 48
def lefts
  {
    Robot::Directions::EAST => Robot::Directions::NORTH,
    Robot::Directions::NORTH => Robot::Directions::WEST,
    Robot::Directions::WEST => Robot::Directions::SOUTH,
    Robot::Directions::SOUTH => Robot::Directions::EAST
  }.freeze
end
rights() click to toggle source
# File lib/robot/position.rb, line 57
def rights
  {
    Robot::Directions::EAST => Robot::Directions::SOUTH,
    Robot::Directions::SOUTH => Robot::Directions::WEST,
    Robot::Directions::WEST => Robot::Directions::NORTH,
    Robot::Directions::NORTH => Robot::Directions::EAST
  }.freeze
end