main
 1class NavigateRover
 2  def initialize(plateau_size, starting_position, instructions)
 3    @plateau_size = plateau_size
 4    @x, @y, @heading = starting_position.split()
 5    @instructions = instructions.split(//)
 6  end
 7
 8  def run
 9    run_against(create_plateau(@plateau_size).deploy_rover_to(@heading, @x.to_i, @y.to_i))
10  end
11
12  private
13
14  def create_plateau(plateau_size)
15    x,y = plateau_size.split(' ')
16    Plateau.new(x,y)
17  end
18
19  def run_against(rover)
20    @instructions.each do |instruction|
21      eval("#{instruction.upcase}Command").new.run(rover)
22    end
23    rover.to_s
24  end
25end