示例#1
0
 def test_Parse_RoverPlans(self):
     parser = Parser()
     parser.parseLine(" 5 5 ")
     parser.parseLine(" 1  2  E   ")
     parser.parseLine("  LMlmLMlm")
     parser.parseLine(" 3  4W    ")
     parser.parseLine(" RM rm RM r m    ")
     plans = parser.compileRoverPlans()
     self.assertEqual(2, len(plans))
     self.assertEqual([1, 2, "E"], plans[0].startPoint)
     self.assertEqual("LMLMLMLM", plans[0].commands)
     self.assertEqual([3, 4, "W"], plans[1].startPoint)
     self.assertEqual("RMRMRMRM", plans[1].commands)
示例#2
0
    def test_Parse_Empty_Lines(self):
        lines = [
            " 5 5 ", "    ", " 1  2  E   ", "    ", "  LMlmLMlm", " 3  4W    ",
            "    ", " RM rm RM r m    "
        ]
        parser = Parser()

        for line in lines:
            parser.parseLine(line)

        plans = parser.compileRoverPlans()
        self.assertEqual(2, len(plans))
        self.assertEqual([1, 2, "E"], plans[0].startPoint)
        self.assertEqual("LMLMLMLM", plans[0].commands)
        self.assertEqual([3, 4, "W"], plans[1].startPoint)
        self.assertEqual("RMRMRMRM", plans[1].commands)
示例#3
0
def main ():
    parser = Parser()

    # read input from piped data
    for line in sys.stdin:
        line = line.rstrip()
        parser.parseLine(line)

    # throw error if something is wrong with input
    if not parser.boundary or not parser.allStartPoints or not parser.allCommands:
        raise ValueError("Error: {}\n. Something went wrong with the input")
    if len(parser.allStartPoints) != len(parser.allCommands):
        raise ValueError("Error: {}\n. Missing some data!")

    # setup plateau object and pass along the surface boundary and list of roverPlans
    plateau = Plateau(parser.boundary, parser.compileRoverPlans())

    # plot the rover paths along the plateau and compile the final rover positions
    plateau.plotRoverCourses()

    # output the final results
    for point in plateau.finalPositions:
        print("{} {} {}".format(point[0], point[1], point[2]))