Esempio n. 1
0
 function testFinalPosition2()
 {
     $marsRover = new Rover();
     $marsRover->setPlanetSize('5 5');
     $marsRover->explore('3 3 E', 'MMRMMRMRRM');
     $this->assertEqual($marsRover->getCurrentPosition(), '5 1 E');
 }
Esempio n. 2
0
 /**
  * Форма управления роверами
  */
 public function result()
 {
     $input = Input::all();
     if (empty($input)) {
         App::abort(404);
     }
     Plateau::getInstance()->setMaxCoordinates($input['plateau']);
     $rovers = [];
     foreach ($input['coordinates'] as $key => $coordinates) {
         try {
             $rover = new Rover($coordinates);
             $rovers["Ровер №{$key}"] = ['error' => false, 'message' => $rover->executeCommand($input['command'][$key])->getPosition()];
         } catch (Exception $e) {
             $rovers["Ровер №{$key}"] = ['error' => true, 'message' => $e->getMessage()];
         }
     }
     $plateauCoordinates = implode(' ', Plateau::getInstance()->getMaxCoordinates());
     $this->layout->body = View::make('home.result', compact('rovers', 'plateauCoordinates'));
 }
Esempio n. 3
0
 public function testRover2()
 {
     $rover = new Rover(5, 5);
     $rover->setPosition(1, 2, Rover::N);
     $rover->process("MMMMMMMMMMMM");
     $this->assertEquals("1 5 N", $rover->getPosition());
     $rover->setPosition(3, 2, Rover::S);
     $rover->process("MLMM");
     $this->assertEquals("5 1 E", $rover->getPosition());
 }
Esempio n. 4
0
 public function testRoverMove()
 {
     $rover = new Rover(2, 5, "N");
     $this->assertSame(array(2, 6, "N"), $rover->forward()->getPosition());
     $this->assertSame(array(2, 7, "N"), $rover->forward()->getPosition());
     $this->assertSame(array(1, 7, "W"), $rover->rotate("L")->forward()->getPosition());
     $this->assertSame(array(0, 7, "W"), $rover->forward()->getPosition());
     $this->assertSame(array(-1, 7, "W"), $rover->forward()->getPosition());
 }
Esempio n. 5
0
<?php

require_once 'class/Rover.php';
// Create new rover and specify planet size.
$marsRover = new Rover();
$marsRover->setPlanetSize('5 5');
$marsRover->explore('1 2 N', 'LMLMLMLMM');
echo $marsRover->getCurrentPosition() . "\n";
Esempio n. 6
0
<?php

include_once __DIR__ . "/Plateau.php";
include_once __DIR__ . "/Rover.php";
$plateauSize = [];
$roversInputs = [];
$handle = fopen("input.txt", "r");
while (($line = fgets($handle)) !== false) {
    if (!$plateauSize) {
        list($plateauSize['x'], $plateauSize['y']) = explode(' ', trim($line));
    } else {
        $roverInput = [];
        list($roverInput['x'], $roverInput['y'], $roverInput['orientation']) = explode(' ', trim($line));
        $line = fgets($handle);
        $roverInput['instructions'] = str_split(trim($line));
        $roversInputs[] = $roverInput;
    }
}
foreach ($roversInputs as $roverInput) {
    $rover = new Rover(new Plateau($plateauSize['x'], $plateauSize['y']), $roverInput['x'], $roverInput['y'], $roverInput['orientation'], $roverInput['instructions']);
    try {
        $rover->executeInstructions();
        print $rover->getInfo() . "\n";
    } catch (Exception $e) {
        print "Error occurred: " . $e->getMessage();
    }
}
Esempio n. 7
0
 /**
  * @expectedException UnknownInstructionException
  */
 public function testUnknownInstructionException()
 {
     $plateau = new Plateau(5, 5);
     $rover = new Rover($plateau, 5, 5, Plateau::SOUTH, ['42']);
     $rover->executeInstructions();
 }
Esempio n. 8
0
 /**
  * {@inheritDoc}
  */
 public function onRoverMove(Rover $rover)
 {
     if (!$this->validateCoordinates($rover->getX(), $rover->getY())) {
         throw new \Exception(sprintf('Rover went out of planet\'s bounds (%d, %d)', $rover->getX(), $rover->getY()));
     }
 }