Commit 08cb61b

mo k <mo@mokhan.ca>
2012-08-11 05:11:47
implement to_s on the rover.
1 parent 47f52f3
lib/north.rb
@@ -8,4 +8,7 @@ class North
   def forward(location)
     location[:y] = location[:y].to_i + 1
   end
+  def to_s
+    'N'
+  end
 end
lib/rover.rb
@@ -17,7 +17,7 @@ class Rover
     terrain.move_forward(@heading, @location)
   end
   def to_s
-    "#{@heading} #{@location}"
+    "#{@location[:x]} #{@location[:y]} #{@heading}"
   end
 end
 
spec/unit/north_spec.rb
@@ -21,4 +21,9 @@ describe North do
       sut.turn_left.should be_an_instance_of(West)
     end
   end
+  context "when displayed" do
+    it "should display 'N'" do
+      sut.to_s.should == 'N'
+    end
+  end
 end
spec/unit/rover_spec.rb
@@ -82,4 +82,9 @@ describe Rover do
       @sut.move_forward(@terrain)
     end
   end
+  context "when printed" do
+    it "should return the heading and location" do
+      create_sut(:north).to_s.should == '0 0 N'
+    end
+  end
 end
readme.mkd
@@ -0,0 +1,61 @@
+PROBLEM THREE: MARS ROVERS
+
+
+A squad of robotic rovers are to be landed by NASA on a plateau on Mars.
+This plateau, which is curiously rectangular, must be navigated by the
+rovers so that their on-board cameras can get a complete view of the
+surrounding terrain to send back to Earth.
+
+A rover's position and location is represented by a combination of x and
+y
+co-ordinates and a letter representing one of the four cardinal compass
+points. The plateau is divided up into a grid to simplify navigation. An
+example position might be 0, 0, N, which means the rover is in the
+bottom
+left corner and facing North.
+
+In order to control a rover, NASA sends a simple string of letters. The
+possible letters are 'L', 'R' and 'M'. 'L' and 'R' makes the rover spin
+90
+degrees left or right respectively, without moving from its current
+spot.
+'M' means move forward one grid point, and maintain the same heading.
+
+Assume that the square directly North from (x, y) is (x, y+1).
+
+INPUT:
+The first line of input is the upper-right coordinates of the plateau,
+the
+lower-left coordinates are assumed to be 0,0.
+
+The rest of the input is information pertaining to the rovers that have
+been deployed. Each rover has two lines of input. The first line gives
+the
+rover's position, and the second line is a series of instructions
+telling
+the rover how to explore the plateau.
+
+The position is made up of two integers and a letter separated by
+spaces,
+corresponding to the x and y co-ordinates and the rover's orientation.
+
+Each rover will be finished sequentially, which means that the second
+rover
+won't start to move until the first one has finished moving.
+
+
+OUTPUT
+The output for each rover should be its final co-ordinates and heading.
+
+INPUT AND OUTPUT
+
+Test Input:
+5 5
+1 2 N
+LMLMLMLMM
+3 3 E
+MMRMMRMRRM
+
+Expected Output:
+1 3 N
+5 1 E